当前位置: 代码迷 >> Web前端 >> 腾讯微博 直接复制粘贴下传图片的实现
  详细解决方案

腾讯微博 直接复制粘贴下传图片的实现

热度:726   发布时间:2012-10-18 13:46:55.0
腾讯微博 直接复制粘贴上传图片的实现

JS 地址

http://mat1.gtimg.com/www/mb/js/mi.Capture_110307.js

?

MI.Capture = {};
(function (f, g) {
    var h = navigator,
        i = h.userAgent.toLowerCase(),
        q = /(windows|win32)/.test(i),
        l = i.indexOf("opera") > -1,
        p = i.indexOf("compatible") > -1 && !l || i.indexOf("msie") > -1;
    l = /(khtml|konqueror|applewebkit)/.test(i);
    l = i.indexOf("gecko") > -1 && !l;
    var m = /firefox\/((\d|\.)+)/i.test(i) && RegExp.$1,
        o = {
            screencapture: 0,
            uploader: 2,
            ftn: 3,
            dropfile: 4
        },
        r = function (a) {
            return [a, +new Date, Math.random()].join("").split(".").join("")
        }("FF"),
        d = {
            _mbAble: false
        };
    if (p) d = {
        _msLastWholeVer: "1.0.1.32",
        _msCurWholeVer: "",
        _mbAble: true,
        _moProgId: ["TXGYMailActiveX.ScreenCapture", "", "TXGYMailActiveX.Uploader", "TXFTNActiveX.FTNUpload", "TXGYMailActiveX.DropFile"],
        _moCurVer: new Array(5),
        _moBaseVer: ["0.0.0.1", "", "1.0.1.31", "1.0.0.12", "1.0.0.8"],
        _moLastVer: ["1.0.1.31", "", "1.0.1.31", "1.0.0.12", "1.0.0.8"],
        _moMiniVer: ["1.0.0.28", "", "1.0.1.28", "1.0.0.10", "1.0.0.7"]
    };
    else if (l) {
        m = m.split(".");
        d = {
            _msLastWholeVer: "1.0.1.32",
            _msCurWholeVer: "",
            _mbAble: q && l && m[0] >= 3 && (m[1] > 0 || m[2] >= 8 || parseInt(h.buildID.substr(0, 8)) >= 20090701),
            _moProgId: ["ScreenCapture", "", "Uploader", "FTNUpload", ""],
            _moPluginName: ["QQMail Plugin", "", "QQMail Plugin", "Tencent FTN plug-in", "QQMail Plugin"],
            _moCurVer: new Array(5),
            _moBaseVer: ["0.0.0.2", "", "1.0.1.32", "1.0.0.1", "1.0.0.0"],
            _moLastVer: ["1.0.1.32", "", "1.0.1.32", "1.0.0.1", "1.0.0.2"],
            _moMiniVer: ["1.0.0.28", "", "1.0.1.28", "1.0.0.1", "1.0.0.0"]
        }
    }
    var k = {
        lastVersion: d._msLastWholeVer,
        getVersion: function (a) {
            if (!d._mbAble) return "";
            var b = this;
            a = typeof a == "number" ? a : o[a];
            if (a === g) {
                if (d._msCurWholeVer) return d._msCurWholeVer;
                var c;
                a = [0, 0, 0, 0];
                for (var e = 0; e < 5; e++) if (c = b.getVersion(e)) {
                    c = c.split(".");
                    for (var j = d._moBaseVer[e].split("."), n = 0; n < 4; n++) a[n] += parseInt(c[n]) - j[n]
                }
                return a[0] ? (d._msCurWholeVer = a.join(".")) : ""
            } else {
                e = d._moCurVer;
                e[a] || b._createActiveX(a, r);
                return e[a] || ""
            }
        },
        isSupport: function (a) {
            var b = this,
                c = o[a];
            if (c !== g) {
                if (!/:\.(qq|foxmail)\.com\//i.test(f.location.href) && document.domain != "qq.com") return -4;
                if (!d._mbAble) return -3;
                if (!(a = b.getVersion(a))) return -2;
                if (a == d._moLastVer[c]) return 2;
                a = a.split(".");
                c = d._moMiniVer[c].split(".");
                for (b = 0; b < 4; b++) if (parseInt(a[b]) < parseInt(c[b])) return -1;
                return 1
            }
            return -5
        },
        getInstance: function (a) {
            a = o[a];
            if (d._mbAble && a !== g) try {
                return new[k._screencapture, null, k._uploader, k._ftn, k._dropfile][a](k._createActiveX(a))
            } catch (b) {}
            return null
        },
        openDonwload: function () {
            d._msCurWholeVer = "";
            d._moCurVer = new Array(5);
            return true
        },
        _createActiveX: function (a, b) {
            var c = this;
            _oInstance = null;
            if (p) try {
                _oInstance = new ActiveXObject(d._moProgId[a]);
                d._moCurVer[a] = a == 4 ? d._moLastVer[4] : _oInstance.version
            } catch (e) {} else if (c._checkInstallPlugin(a)) {
                c = f.document;
                var j = "QQMailFFPluginIns";
                if (a == 3) {
                    j = b || j + +new Date;
                    if (!(b = c.getElementById(j))) {
                        b = c.createElement("embed");
                        b.id = j;
                        b.type = "application/txftn";
                        b.setAttribute("hidden", "true");
                        c.body.appendChild(b)
                    }
                    _oInstance = b.Version ? b : null
                } else {
                    if (!(b = c.getElementById(j))) {
                        b = c.createElement("embed");
                        b.id = j;
                        b.type = "application/x-tencent-qmail";
                        b.setAttribute("hidden", "true");
                        c.body.appendChild(b)
                    }
                    c = {
                        0: "CreateScreenCapture",
                        2: "CreateUploader",
                        4: "CreateDragDropManager"
                    }[a];
                    if (typeof b[c] != "undefined") _oInstance = b[c]()
                }
                if (_oInstance) d._moCurVer[a] = _oInstance.Version
            }
            return _oInstance
        },
        _checkInstallPlugin: function (a) {
            var b = d._moPluginName[a];
            a = a != 3 && (i.indexOf("vista") > -1 || /nt 6/gi.test(i));
            var c = h.plugins;
            if (d._mbAble && c && b) for (var e = c.length - 1; e >= 0; e--) if (c[e].name.indexOf(b) != -1) if (!(a && !c[e].description.split("#")[1])) return true;
            return false
        }
    };
    k._uploader = function (a) {
        var b = this;
        b._moActiveX = a;
        b._moBaseConfig = {}
    };
    k._screencapture = function (a) {
        this._moActiveX = a
    };
    MI.Capture = k
})(window);
MI.Capture.createActiveX = function (f) {
    return MI.Capture.getInstance(f)._moActiveX
};
MI.Capture.enable = MI.Capture.isSupport("screencapture") > 0;
MI.Capture.install = function () {
    UI.ready(function () {
        UI.append(UI.html('<iframe onload="if(MI && MI.dialog)MI.dialog.hide();" src="http://mail.qq.com/cgi-bin/readtemplate?check=false&t=control_install&action=install" style="display:none"></iframe>')[0], document.body)
    })
};
UI.ready(function () {
    if (MI.Capture.enable) {
        MI.Capture.screen = MI.Capture.createActiveX("screencapture");
        if (MI.Capture.screen) MI.Capture.screen.OnCaptureFinished = function () {
            MI.Capture.screen.BringToFront(window);
            MI.Capture.upload()
        };
        MI.Capture.uploader = MI.Capture.createActiveX("uploader");
        if (MI.Capture.uploader) {
            MI.Capture.uploader.URL = "http://upload.t.qq.com/asyn/uploadpic.php";
            MI.Capture.uploader.CodePage = 65001;
            MI.Capture.uploader.AddHeader("cookie", document.cookie);
            MI.Capture.uploader.OnEvent = function (f, g) {
                switch (g) {
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    if (MI.talkBox) {
                        f = MI.Capture.uploader.Response.replace("parent.MI", "MI").replace("'image'", "'fileName':MI.Capture.fileName,'image'");
                        UI.evalScript(f)
                    }
                    break
                }
            }
        }
        MI.Capture.fileName = "";
        MI.Capture.upload = function () {
            var f = MI.Capture.screen.IsClipBoardImage,
                g = MI.Capture.uploader.GetClipboardFiles(),
                h;
            if ((f || g) && MI.talkBox && MI.talkBox.pic) MI.alert("每条广播只能插入一张照片");
            else {
                if (f) {
                    h = MI.Capture.screen.SaveClipBoardBmpToFile(1);
                    MI.Capture.fileName = "截屏.jpg"
                } else if (g) {
                    h = g.split(" ")[0];
                    MI.Capture.fileName = g.replace(h + " ", "").split("\r")[0]
                }
                if (h) {
                    MI.Capture.uploader.StopUpload();
                    MI.Capture.uploader.ClearFormItems();
                    MI.Capture.uploader.AddFormItem("pic", 1, 0, h);
                    MI.Capture.uploader.StartUpload();
                    MI.talkBox && MI.talkBox.uploadPic();
                    MI.Bos("btnPicCapture")
                }
            }
        }
    }
}); /*  |xGv00|9325922e0b144f0a88e292fdd7b6b5e7 */

< html xmlns = "http://www.w3.org/1999/xhtml" > < body xmlns = "http://www.w3.org/1999/xhtml" > < div xmlns = "http://www.w3.org/1999/xhtml" > < img width = '77'
height = '5'
src = 'chrome://livemargins/skin/monitor-background-horizontal.png'
style = 'position: absolute;left:-77px;top:-5px' / > < img src = 'chrome://livemargins/skin/monitor-background-vertical.png'
style = 'position: absolute;left:0;top:-5px;' / > < img id = 'monitor-play-button'
src = 'chrome://livemargins/skin/monitor-play-button.png'
onmouseover = 'this.style.opacity=1'
onmouseout = 'this.style.opacity=0.5'
style = 'position: absolute;left:1px;top:0;opacity:0.5;cursor:pointer' / >
?

?

?

?

?

?

http://mat1.gtimg.com/www/mb/js/mi_110520a.js

?

?

String.prototype.hasString = function (c) {
    if (typeof c == "object") {
        for (var f = 0, n = c.length; f < n; f++) if (!this.hasString(c[f])) return false;
        return true
    } else if (this.indexOf(c) != -1) return true
};
String.prototype.breakWord = function (c, f) {
    f || (f = "<wbr/>");
    return this.replace(RegExp("(\\w{" + (c ? c : 0) + "})(\\w)", "g"), function (n, a, b) {
        return a + f + b
    })
};
UI = window.UI || {
    ajax: function (c) {
        var f = c.xhr || UI.xmlHttp(),
            n, a;
        f.onreadystatechange = function () {
            if (f.readyState == 1) {
                if (c.timeout && c.fail) a = setTimeout(function () {
                    if (!n) {
                        f.abort();
                        c.fail()
                    }
                }, c.timeout)
            } else if (f.readyState == 2) c.send && c.send();
            else if (f.readyState == 4) {
                n = 1;
                if (f.status == 200) try {
                    c.success(f.responseText)
                } catch (g) {} else if (c.fail) {
                    clearTimeout(a);
                    c.fail()
                }
            }
        };
        if (UI.isObject(c.data)) {
            var b = [],
                e;
            for (e in c.data) b.push(e + "=" + encodeURIComponent(c.data[e]));
            c.data = b.join("&")
        }
        if (c.type == "get") {
            f.open("GET", c.url + (c.url.hasString("?") ? "&" : "?") + c.data, true);
            f.send(null)
        } else {
            f.open("POST", c.url, true);
            f.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            f.send(c.data)
        }
        return f
    },
    get: function (c, f, n) {
        var a = UI.xmlHttp(),
            b = c.hasString("?") ? "&" : "?";
        a.onreadystatechange = function () {
            if (a.readyState == 4 && a.status == 200) try {
                n(a.responseText)
            } catch (h) {} else return a
        };
        if (f != undefined) if (UI.isObject(f)) {
            var e = [],
                g;
            for (g in f) e.push(g + "=" + encodeURIComponent(f[g]));
            c += b + e.join("&")
        } else c += b + f;
        a.open("GET", c, true);
        a.send(null);
        return a
    },
    xmlHttp: function () {
        var c;
        if (window.ActiveXObject) c = new ActiveXObject("Microsoft.XMLHTTP");
        else if (window.XMLHttpRequest) c = new XMLHttpRequest;
        return c
    },
    crossAsynJson: function (c, f, n, a) {
        var b = UI.DC("script"),
            e = UI.GT(document, "head")[0];
        window[f] = function (g) {
            window[f] = undefined;
            try {
                delete window[f]
            } catch (h) {}
            n(g);
            e && setTimeout(function () {
                e.removeChild(b)
            }, 5)
        };
        a && UI.A(b, "charset", a);
        UI.A(b, "type", "text/javascript");
        UI.A(b, "src", c);
        e.appendChild(b)
    },
    getScript: function (c, f, n, a) {
        var b = UI.DC("script");
        if (f) if (UI.B.ie) b.onreadystatechange = function () {
            if (b.readyState == "loaded" || b.readyState == "complete") {
                f();
                a || UI.remove(b)
            }
        };
        else b.onload = function () {
            f();
            a || UI.remove(b)
        };
        n && UI.A(b, "charset", n);
        UI.A(b, "type", "text/javascript");
        UI.A(b, "src", c);
        UI.A(b, "async", "true");
        UI.GT(document, "head")[0].appendChild(b)
    },
    getCss: function (c, f, n) {
        var a = n ? n : UI.DC("link");
        if (f) a.onload = f;
        if (!n) {
            UI.A(a, "rel", "stylesheet");
            UI.A(a, "type", "text/css");
            UI.GT(document, "head")[0].appendChild(a)
        }
        UI.A(a, "href", c)
    },
    evalScript: function (c) {
        var f = this.regExp.script;
        (c = c.match(RegExp(f, "img"))) && UI.each(c, function (n) {
            eval(n.match(RegExp(f, "im"))[1])
        })
    },
    regExp: {
        script: "<script[^>]*>([\\S\\s]*?)<\/script>"
    },
    encode: function (c) {
        return escape(UI.utfEncode(c))
    },
    decode: function (c) {
        return UI.utfDecode(unescape(c))
    },
    utfEncode: function (c) {
        c = c.replace(/\r\n/g, "\n");
        for (var f = "", n = 0; n < c.length; n++) {
            var a = c.charCodeAt(n);
            if (a < 128) f += String.fromCharCode(a);
            else {
                if (a > 127 && a < 2048) f += String.fromCharCode(a >> 6 | 192);
                else {
                    f += String.fromCharCode(a >> 12 | 224);
                    f += String.fromCharCode(a >> 6 & 63 | 128)
                }
                f += String.fromCharCode(a & 63 | 128)
            }
        }
        return f
    },
    utfDecode: function (c) {
        for (var f = "", n = 0, a = c1 = c2 = 0; n < c.length;) {
            a = c.charCodeAt(n);
            if (a < 128) {
                f += String.fromCharCode(a);
                n++
            } else if (a > 191 && a < 224) {
                c2 = c.charCodeAt(n + 1);
                f += String.fromCharCode((a & 31) << 6 | c2 & 63);
                n += 2
            } else {
                c2 = c.charCodeAt(n + 1);
                c3 = c.charCodeAt(n + 2);
                f += String.fromCharCode((a & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                n += 3
            }
        }
        return f
    },
    parseUrl: function (c, f) {
        var n = c ? c : document.location.href,
            a = {};
        f = f || "?";
        if (!n.hasString(f)) return a;
        n = n.split(f)[1].split("&");
        for (var b = 0; b < n.length; b++) {
            var e = n[b].replace(/#.*$/g, "").split("=");
            e[1] || (e[1] = "");
            a[e[0]] = UI.B.ie ? e[1] : UI.decode(e[1])
        }
        return a
    },
    cookie: function (c, f, n, a) {
        if (f == undefined) {
            c += "=";
            f = document.cookie.split(";");
            for (n = 0; n < f.length; n++) {
                for (a = f[n]; a.charAt(0) == " ";) a = a.substring(1, a.length);
                if (a.indexOf(c) == 0) return decodeURIComponent(a.substring(c.length, a.length))
            }
            return null
        } else {
            var b = "";
            if (n) {
                b = new Date;
                b.setTime(b.getTime() + n * 864E5);
                b = "; expires=" + b.toGMTString()
            }
            document.cookie = c + "=" + f + b + "; path=/" + (a ? ";domain=" + a : "")
        }
    },
    drag: function (c, f, n) {
        var a = document;
        n = n != undefined ? n : true;
        UI.EA(c, "mousedown", function (b) {
            f.start && f.start(b);
            if (n) if (c.setCapture) c.setCapture();
            else window.captureEvents && window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
            if (f.drag) a.onmousemove = f.drag;
            a.onmouseup = function () {
                if (n) if (c.releaseCapture) c.releaseCapture();
                else window.captureEvents && window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
                f.stop && f.stop(b);
                a.onmousemove = null;
                a.onmouseup = null;
                f.call && f.call(b)
            }
        })
    },
    animate: function (c, f, n, a, b, e) {
        b = b || 0.4;
        var g = f.hasString("scroll"),
            h = "height,width,marginLeft,marginTop".hasString(f),
            k, j = setInterval(function () {
                var l, o, m, q = f == "opacity";
                l = h ? c.style[f] : g ? c[f] : UI.C(c, f);
                if (q) {
                    l *= 100;
                    n *= 100;
                    if (n > 100) n = 100
                } else g || (l = l == "auto" ? 0 : Number(l.slice(0, -2)));
                if (Math.abs(n - l) <= 3 || g && k == l) {
                    l = n;
                    clearInterval(j)
                }
                m = (n - l) * b;
                if (!q) if (m > 0 && m < 1) m = 1;
                else if (m < 0 && m > -1) m = -1;
                o = k = l + m;
                if (!q && (m < 0 && n - o > 0 || m > 0 && o - n > 0)) o = n;
                if (h) c.style[f] = o + "px";
                else if (g) c[f] = parseInt(o);
                else UI.C(c, f, !q ? o + "px" : o / 100 + "");
                if (l == n) if (UI.isString(a)) eval(a);
                else a && a()
            }, e || 40);
        return j
    },
    getX: function (c) {
        return (c.offsetParent ? c.offsetLeft + UI.getX(c.offsetParent) : c.offsetLeft) + (UI.C(c, "position") == "fixed" ? UI.scrollX() : 0)
    },
    getY: function (c) {
        return (c.offsetParent ? c.offsetTop + UI.getY(c.offsetParent) : c.offsetTop) + (UI.C(c, "position") == "fixed" ? UI.scrollY() : 0)
    },
    within: function (c, f) {
        var n = UI.getX(f) - UI.scrollX(),
            a = UI.width(f) + n,
            b = UI.getY(f) - UI.scrollY(),
            e = UI.height(f) + b,
            g = {};
        if (c[0] > n && c[0] < a && c[1] > b && c[1] < e) {
            if (c[0] - n < (a - n) / 2) g.left = true;
            if (c[1] - b < (e - b) / 2) g.top = true;
            return g
        }
    },
    frameX: function (c) {
        return c.frameElement ? UI.getX(c.frameElement) + UI.frameX(c.parent) : 0
    },
    frameY: function (c) {
        return c.frameElement ? UI.getY(c.frameElement) + UI.frameY(c.parent) : 0
    },
    width: function (c) {
        return parseInt(c.offsetWidth)
    },
    height: function (c) {
        return parseInt(c.offsetHeight)
    },
    pageWidth: function () {
        return document.body.scrollWidth || document.documentElement.scrollWidth
    },
    pageHeight: function () {
        return document.body.scrollHeight || document.documentElement.scrollHeight
    },
    windowWidth: function () {
        var c = document.documentElement;
        return self.innerWidth || c && c.clientWidth || document.body.clientWidth
    },
    windowHeight: function () {
        var c = document.documentElement;
        return self.innerHeight || c && c.clientHeight || document.body.clientHeight
    },
    scrollX: function (c) {
        var f = document.documentElement;
        if (c) {
            var n = c.parentNode,
                a = c.scrollLeft || 0;
            if (c == f) a = UI.scrollX();
            return n ? a + UI.scrollX(n) : a
        }
        return self.pageXOffset || f && f.scrollLeft || document.body.scrollLeft
    },
    scrollY: function (c) {
        var f = document.documentElement;
        if (c) {
            var n = c.parentNode,
                a = c.scrollTop || 0;
            if (c == f) a = UI.scrollY();
            return n ? a + UI.scrollY(n) : a
        }
        return self.pageYOffset || f && f.scrollTop || document.body.scrollTop
    },
    scrollTo: function (c, f, n) {
        if (c == document.documentElement || c == document.body) return window.scrollTo(f, n)
    },
    hide: function (c) {
        if (UI.isString(c)) c = this.G(c);
        if (c) {
            var f = this.C(c, "display");
            if (f != "none") c.__curDisplay = f;
            c.style.display = "none"
        }
    },
    show: function (c) {
        if (UI.isString(c)) c = this.G(c);
        if (c) c.style.display = c.__curDisplay || ""
    },
    toggle: function (c) {
        if (UI.isString(c)) c = this.G(c);
        this.C(c, "display") == "none" ? this.show(c) : this.hide(c)
    },
    hasClass: function (c, f) {
        if (!c || !c.className) return false;
        return c.className != c.className.replace(RegExp("\\b" + f + "\\b"), "")
    },
    addClass: function (c, f) {
        if (c) if (c.className) if (this.hasClass(c, f)) return false;
        else c.className += " " + f;
        else c.className = f
    },
    removeClass: function (c, f) {
        if (c) c.className = c.className.replace(RegExp("\\b" + f + "\\b"), "")
    },
    toggleClass: function (c, f) {
        this.hasClass(c, f) ? this.removeClass(c, f) : this.addClass(c, f)
    },
    next: function (c) {
        c = c.nextSibling;
        if (c == null) return false;
        return UI.isElement(c) ? c : this.next(c)
    },
    prev: function (c) {
        c = c.previousSibling;
        if (c == null) return false;
        return UI.isElement(c) ? c : this.prev(c)
    },
    remove: function (c) {
        c && c.parentNode && c.parentNode.removeChild(c)
    },
    append: function (c, f) {
        f.appendChild(c)
    },
    prepend: function (c, f) {
        var n = f.firstChild;
        n ? UI.before(c, n) : UI.append(c, f)
    },
    after: function (c, f) {
        var n = f.parentNode;
        n.lastChild == c ? n.appendChild(c) : n.insertBefore(c, f.nextSibling)
    },
    before: function (c, f) {
        f.parentNode.insertBefore(c, f)
    },
    replace: function (c, f) {
        f.parentNode.replaceChild(c, f)
    },
    tmpl: function () {
        var c = {};
        return function f(n, a) {
            var b = !/\W/.test(n) ? c[n] = c[n] || f(UI.G(n).innerHTML) : UI.tmplString(n);
            return a ? b(a) : b
        }
    }(),
    tmplString: function (c) {
        return new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" + c.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'") + "');}return p.join('');")
    },
    html: function (c) {
        var f = UI.DC("div"),
            n = [];
        f.innerHTML = c;
        UI.each(f.childNodes, function (a) {
            n.push(a)
        });
        return n
    },
    css: function (c, f) {
        var n;
        if (!f) {
            f = UI.DC("style");
            UI.A(f, "type", "text/css");
            UI.append(f, UI.GT(document, "head")[0])
        }
        if (f.styleSheet) f.styleSheet.cssText = c;
        else {
            n = document.createTextNode(c);
            UI.append(n, f)
        }
    },
    text: function (c) {
        var f = [];
        c = c.childNodes;
        for (var n, a = 0, b = c.length; a < b; a++) {
            n = c[a].nodeName.toUpperCase();
            n == "STYLE" || n == "SCRIPT" || f.push(c[a].nodeType != 1 ? c[a].nodeValue : UI.text(c[a]))
        }
        return f.join("")
    },
    parent: function (c, f) {
        if (UI.isArray(c)) {
            var n = [];
            UI.each(c, function (a) {
                if (f && UI.hasClass(a.parentNode, f) || !f) n.push(a.parentNode)
            });
            return n
        }
        return c.parentNode
    },
    parents: function (c, f) {
        if (f) {
            var n = [],
                a = UI.parents(c);
            UI.each(a, function (b) {
                UI.hasClass(b, f) && n.push(b)
            });
            return n
        }
        a = c.parentNode;
        return a.nodeName == "HTML" ? [a] : [a].concat(UI.parents(a))
    },
    children: function (c, f) {
        var n = [];
        if (f) f = f.split("|");
        UI.each(c.childNodes, function (a) {
            var b = false;
            if (f) for (var e = 0, g = f.length; e < g; e++) if (UI.hasClass(a, f[e])) {
                b = true;
                break
            }
            if (UI.isElement(a) && (!f || b)) n.push(a)
        });
        return n
    },
    A: function (c, f, n) {
        if (n == undefined) return c.getAttribute(f);
        else n == "" ? c.removeAttribute(f) : c.setAttribute(f, n)
    },
    C: function (c, f, n) {
        if (n == undefined) if (window.getComputedStyle) {
            f = f.replace(/([A-Z])/g, "-$1");
            f = f.toLowerCase();
            return window.getComputedStyle(c, null).getPropertyValue(f)
        } else {
            if (c.currentStyle) {
                if (f == "opacity") return c.style.filter.indexOf("opacity=") >= 0 ? parseFloat(c.style.filter.match(/opacity=([^)]*)/)[1]) / 100 : "1";
                return c.currentStyle[f]
            }
        } else if (f == "opacity" && UI.B.ie && !UI.B.ie9) c.style.filter = (c.filter || "").replace(/alpha\([^)]*\)/, "") + "alpha(opacity=" + n * 100 + ")";
        else c.style[f] = n
    },
    DC: function (c) {
        return document.createElement(c)
    },
    E: function (c) {
        if (c && c.clone) return c;
        c = window.event || c;
        return {
            clone: true,
            stop: function () {
                if (c && c.stopPropagation) c.stopPropagation();
                else c.cancelBubble = true
            },
            prevent: function () {
                if (c && c.preventDefault) c.preventDefault();
                else c.returnValue = false
            },
            target: c.target || c.srcElement,
            x: c.clientX || c.pageX,
            y: c.clientY || c.pageY,
            button: c.button,
            key: c.keyCode,
            shift: c.shiftKey,
            alt: c.altKey,
            ctrl: c.ctrlKey,
            type: c.type,
            wheel: c.wheelDelta / 120 || -c.detail / 3
        }
    },
    EA: function (c, f, n, a) {
        if (UI.isString(c)) {
            var b = n;
            n = function () {
                eval(b)
            }
        }
        if (c.addEventListener) {
            if (f == "mousewheel") f = "DOMMouseScroll";
            c.addEventListener(f, n, a);
            return true
        } else return c.attachEvent ? c.attachEvent("on" + f, n) : false
    },
    ER: function (c, f, n) {
        if (c.removeEventListener) {
            c.removeEventListener(f, n, false);
            return true
        } else return c.detachEvent ? c.detachEvent("on" + f, n) : false
    },
    G: function (c) {
        return document.getElementById(c)
    },
    GT: function (c, f) {
        return c.getElementsByTagName(f)
    },
    GC: function () {
        function c(j, l) {
            if (!l) {
                l = j;
                j = document
            }
            j = j || document;
            if (!/^[\w\-_#]+$/.test(l) && j.querySelectorAll) return f(j.querySelectorAll(l));
            if (l.indexOf(",") > -1) {
                for (var o = l.split(/,/g), m = [], q = 0, p = o.length; q < p; ++q) m = m.concat(c(j, o[q]));
                return k(m)
            }
            o = l.match(a);
            p = o.pop();
            m = (p.match(e) || h)[1];
            var r = !m && (p.match(b) || h)[1];
            q = p.split(".").slice(2);
            p = !m && (p.match(g) || h)[1];
            if (r && !p && j.getElementsByClassName) p = f(j.getElementsByClassName(r));
            else {
                p = !m && f(j.getElementsByTagName(p || "*"));
                if (r) {
                    r = RegExp("(^|\\s)" + r + "(\\s|$)");
                    var s = -1,
                        u, x = -1,
                        w = [];
                    for (q = q || ""; u = p[++s];) if (r.test(u.className) && u.className.hasString(q)) w[++x] = u;
                    p = w
                }
                if (m) return (o = j.getElementById(m)) ? [o] : []
            }
            return o[0] && p[0] ? n(o, p) : p
        }
        function f(j) {
            try {
                return Array.prototype.slice.call(j)
            } catch (l) {
                for (var o = [], m = 0, q = j.length; m < q; ++m) o[m] = j[m];
                return o
            }
        }
        function n(j, l, o) {
            var m = j.pop();
            if (m === ">") return n(j, l, true);
            var q = [],
                p = -1,
                r = (m.match(e) || h)[1],
                s = !r && (m.match(b) || h)[1];
            m = !r && (m.match(g) || h)[1];
            var u = -1,
                x, w, y;
            for (m = m && m.toLowerCase(); x = l[++u];) {
                w = x.parentNode;
                do {
                    y = (y = (y = !m || m === "*" || m === w.nodeName.toLowerCase()) && (!r || w.id === r)) && (!s || RegExp("(^|\\s)" + s + "(\\s|$)").test(w.className));
                    if (o || y) break
                } while (w = w.parentNode);
                if (y) q[++p] = x
            }
            return j[0] && q[0] ? n(j, q) : q
        }
        var a = /(?:[\w\-\\.#]+)+(?:\[\w+?=([\'"])?(?:\\\1|.)+?\1\])?|\*|>/ig,
            b = /^(?:[\w\-_]+)?\.([\w\-_]+)/,
            e = /^(?:[\w\-_]+)?#([\w\-_]+)/,
            g = /^([\w\*\-_]+)/,
            h = [null, null],
            k = function () {
                var j = +new Date,
                    l = function () {
                        var o = 1;
                        return function (m) {
                            var q = m[j],
                                p = o++;
                            if (!q) {
                                m[j] = p;
                                return true
                            }
                            return false
                        }
                    }();
                return function (o) {
                    for (var m = o.length, q = [], p = -1, r = 0, s; r < m; ++r) {
                        s = o[r];
                        if (l(s)) q[++p] = s
                    }
                    j += 1;
                    return q
                }
            }();
        return c
    }(),
    isDate: function (c) {
        return this.getType(c) == "Date"
    },
    cloneDate: function (c) {
        if (!c) return c;
        d = new Date;
        d.setTime(c.getTime());
        return d
    },
    formatDate: function (c, f) {
        for (var n = f.replace(/\W/g, ",").split(","), a = ["yyyy", "MM", "dd", "hh", "mm", "ss", "ww"], b = {
            y: c.getFullYear(),
            M: c.getMonth() + 1,
            d: c.getDate(),
            h: c.getHours(),
            m: c.getMinutes(),
            s: c.getSeconds(),
            w: c.getDay()
        }, e = 0, g = n.length; e < g; e++) for (var h = n[e], k = 0; k < 7; k++) {
            var j = a[k].slice(-1);
            if (h.hasString(j)) {
                if (j == "w" && b[j] == 0) b[j] = 7;
                f = h.hasString(a[k]) ? f.replace(RegExp(a[k], "g"), this.addZero(b[j])) : f.replace(RegExp(a[k].slice(a[k].length / 2), "g"), b[j])
            }
        }
        return f
    },
    parseDate: function (c, f) {
        f || (f = "yyyy-MM-dd");
        f = f.replace(/\W/g, ",").split(",");
        c = c.replace(/\D/g, ",").split(",");
        var n = 2E3,
            a = 0,
            b = 1,
            e = 0,
            g = 0,
            h = 0;
        UI.each(f, function (k, j) {
            if (c[j] != "" && !isNaN(c[j])) {
                if (k.hasString("y")) n = Number(c[j]);
                if (k.hasString("M")) a = Number(c[j]) - 1;
                if (k.hasString("d")) b = Number(c[j]);
                if (k.hasString("h")) e = Number(c[j]);
                if (k.hasString("m")) g = Number(c[j]);
                if (k.hasString("s")) h = Number(c[j]);
                if (k.hasString("w")) h = Number(c[j])
            }
        });
        return new Date(n, a, b, e, g, h)
    },
    zoneDate: function (c, f) {
        var n = new Date(Number(c));
        n = n.getTime() + n.getTimezoneOffset() * 6E4;
        return new Date(n + 36E5 * f)
    },
    isObject: function (c) {
        return typeof c == "object"
    },
    isElement: function (c) {
        return c && c.nodeType == 1
    },
    isUndefined: function (c) {
        return typeof c == "undefined"
    },
    isFunction: function (c) {
        return this.getType(c) == "Function"
    },
    isNumber: function (c) {
        return this.getType(c) == "Number"
    },
    isString: function (c) {
        return this.getType(c) == "String"
    },
    isArray: function (c) {
        return this.getType(c) == "Array"
    },
    getType: function (c) {
        return Object.prototype.toString.call(c).slice(8, -1)
    },
    addZero: function (c, f) {
        f || (f = 2);
        return Array(Math.abs(("" + c).length - (f + 1))).join(0) + c
    },
    trim: function (c) {
        return c.replace(/^\s+|\s+$/g, "")
    },
    random: function (c, f) {
        if (c == undefined) c = 0;
        if (f == undefined) f = 9;
        return Math.floor(Math.random() * (f - c + 1) + c)
    },
    has: function (c, f) {
        for (var n = 0, a = c.length; n < a; n++) if (c[n] == f) return true;
        return false
    },
    each: function (c, f) {
        if (UI.isUndefined(c[0])) for (var n in c) UI.isFunction(c[n]) || f(n, c[n]);
        else {
            n = 0;
            for (var a = c.length; n < a; n++) UI.isFunction(c[n]) || f(c[n], n)
        }
    },
    merge: function (c, f) {
        var n = [];
        if (f) {
            UI.each(f, function (a) {
                UI.has(c, a) || n.push(a)
            });
            return c.concat(n)
        } else {
            UI.each(c, function (a) {
                UI.has(n, a) || n.push(a)
            });
            return n
        }
    },
    ready: function (c) {
        if (UI.ready.done) return c();
        if (UI.isReady.done) UI.readyDo.push(c);
        else {
            UI.readyDo = [c];
            UI.isReady()
        }
    },
    readyDo: [],
    isReady: function () {
        if (!UI.isReady.done) {
            UI.isReady.done = true;
            if (document.readyState == "complete") UI.onReady();
            else if (document.addEventListener) document.addEventListener("DOMContentLoaded", function () {
                document.removeEventListener("DOMContentLoaded", arguments.callee, false);
                UI.onReady()
            }, false);
            else if (document.attachEvent) {
                var c = top != self;
                if (c) document.attachEvent("onreadystatechange", function () {
                    if (document.readyState === "complete") {
                        document.detachEvent("onreadystatechange", arguments.callee);
                        UI.onReady()
                    }
                });
                else document.documentElement.doScroll && !c &&
                function () {
                    if (!UI.ready.done) {
                        try {
                            document.documentElement.doScroll("left")
                        } catch (f) {
                            setTimeout(arguments.callee, 0);
                            return
                        }
                        UI.onReady()
                    }
                }()
            }
            UI.EA(window, "load", UI.onReady)
        }
    },
    onReady: function () {
        if (!UI.ready.done) {
            UI.ready.done = true;
            for (var c = 0, f = UI.readyDo.length; c < f; c++) try {
                UI.readyDo[c]()
            } catch (n) {}
            UI.readyDo = null
        }
    },
    B: function () {
        var c = {},
            f = navigator.userAgent;
        c.win = f.hasString("Windows") || f.hasString("Win32");
        c.ie6 = f.hasString("MSIE 6") && !f.hasString("MSIE 7") && !f.hasString("MSIE 8");
        c.ie8 = f.hasString("MSIE 8");
        c.ie9 = f.hasString("MSIE 9");
        c.ie = f.hasString("MSIE");
        c.opera = window.opera || f.hasString("Opera");
        c.safari = f.hasString("WebKit");
        c.ipad = f.hasString("iPad");
        c.mac = f.hasString("Mac");
        c.firefox = f.hasString("Firefox");
        return c
    }()
};
UI.B.ie && document.execCommand("BackgroundImageCache", false, true);
(function () {
    var c = UI.G,
        f = UI.GC;
    if (!(window.MIApp && !window.MIApp.lib)) {
        window.$ = UI.G;
        window.$$ = UI.GC
    }
    if (!window._) window._ = function (a) {
        if (arguments.length == 1) return a;
        var b = Array.prototype.slice.call(arguments, 1);
        return a.replace(/\{(\d+)\}/g, function (e, g) {
            return b[g]
        })
    };
    onerror = function (a, b, e) {
        if (!MI.user.isLab) {
            var g = encodeURIComponent(document.location.href) + ",";
            if (e) g += e + ",";
            if (a) g += a + ",";
            if (b) g += b + ",";
            g += window.navigator.userAgent;
            MI.Bos("btnOnerror", encodeURIComponent(g));
            return true
        }
    };
    try {
        document.domain = "qq.com"
    } catch (n) {}
    MI = {
        time: null,
        user: {
            fun: {}
        },
        string: {
            length: function (a) {
                var b = a.match(/[^\x00-\x80]/g);
                return a.length + (b ? b.length : 0)
            },
            escape: function (a) {
                return MI.string.html(a).replace(/'/g, "\\'")
            },
            escapeReg: function (a) {
                for (var b = [], e = 0; e < a.length; e++) {
                    var g = a.charAt(e);
                    switch (g) {
                    case ".":
                    case "$":
                    case "^":
                    case "{":
                    case "[":
                    case "(":
                    case "|":
                    case ")":
                    case "*":
                    case "+":
                    case "?":
                    case "\\":
                        b.push("\\x" + g.charCodeAt(0).toString(16).toUpperCase());
                        break;
                    default:
                        b.push(g)
                    }
                }
                return b.join("")
            },
            html: function (a) {
                return a.replace(/</g, "&lt;").replace(/>/g, "&gt;")
            },
            cut: function (a, b, e) {
                e = UI.isUndefined(e) ? "..." : e;
                var g = [],
                    h = "";
                if (MI.string.length(a) > b) {
                    a = a.split("");
                    h = 0;
                    for (var k = a.length; h < k; h++) if (b > 0) {
                        g.push(a[h]);
                        b -= MI.string.length(a[h])
                    } else break;
                    h = g.join("") + e
                } else h = a;
                return h
            },
            id: function (a) {
                return (a = a.match(/[^\/]+$/g)) && a[0] ? a[0].replace("#M", "") : ""
            },
            account: function (a) {
                return (a = a.match(/@[^@]+$/g)) && a[0] ? a[0].slice(1, -1) : ""
            }
        },
        number: {
            format: function (a) {
                return (a + "").replace(/(?=(?!\b)(?:\w{3})+$)/g, ",")
            }
        },
        random: function (a) {
            return parseInt((new Date).getTime() / (a || 1))
        },
        drop: {},
        delay: {},
        validate: {},
        canvas: {},
        focus: function (a) {
            var b = a.value.length;
            a.focus();
            MI.selectTxt(a, b, b, b)
        },
        blur: function () {
            this.blur()
        },
        click: function () {
            return false
        },
        hideFocus: function () {
            UI.A(this, "hideFocus", "true");
            this.onmouseover = null
        },
        boss: null,
        ajax: 0,
        talkNew: [],
        talkMore: [],
        crs: [],
        lazy: {},
        json: function (a) {
            var b = {};
            try {
                b = eval("(" + a + ")")
            } catch (e) {}
            return b
        },
        music: {
            info: "",
            state: null,
            box: ""
        },
        tmpl: {
            picTool: '<div class="tools"><a href="#" class="btnBack"><em></em>' + _("向左转") + '</a><span& gt;|</span><a href="#" class="btnPrev"><em></em>' + _("向右转") + '</a><a href="$Url/2000" class="btnOriginal" onclick="MI.Bos(\'btnPicSource\')" target="_blank">' + _("查看原图") + "</a></div>",
            reply: '<div class="talkWrap"><div class="SA"><em>◆</em><span>◆</span></div>\t<div class="top"><span class="left"><span class="number cNote"></span><span class="replyTitle"></span><span class="addReply"></span></span><a href="#" class="close" title="' + _("关闭") + '">' + _("关闭") + '</a>\t</div>\t<iframe class="comts" src="about:blank" frameborder="0" scrolling="no" style="height:0"></iframe>\t<div class="cont"><textarea class="inputTxt"></textarea></div>\t<div class="bot"><div class="insertFun"><div class="newTopic"><a href="#" class="creatNew" title="' + _("汇聚相同热点的广播") + '" tabindex="3">' + _("话题") + '</a></div><div class="atSome"><span class="ico_at"></span><a class="txt" href="#" title="' + _("@朋友帐号就可以提到他") + '">' + _("朋友") + '</a></div><div class="insertFace"><span class="ico_face"></span><a class="txt" href="#" title="' + _("表情") + '">' + _("表情") + '</a></div></div>< div class="left"></div><input type="button" class="inputBtn sendBtn" value="" /><a hrer="#" class="autoBackspace" style="display:none">[自动缩减]</a><span class="countTxt"></span>\t</div>\t<div class="talkSuc" style="display:none"><span class="ico_tsW"><span class="ico_ts"></span></span><span class="msg"></span></div></div>'
        },
        selectTxt: function (a, b, e) {
            if (document.createRange) a.setSelectionRange(b, e);
            else {
                a = a.createTextRange();
                a.collapse(1);
                a.moveStart("character", b);
                a.moveEnd("character", e - b);
                a.select()
            }
        },
        insertTxt: function (a, b, e, g) {
            if (g == undefined) g = 0;
            a.focus();
            if (document.selection) {
                a = document.selection.createRange();
                a.moveStart("character", -g);
                a.text = b
            } else {
                var h = a.value,
                    k = e + b.length - g;
                a.value = h.substring(0, e - g) + b + h.substring(e, h.length);
                MI.selectTxt(a, k, k, k)
            }
        },
        cursorX: function (a) {
            if (document.selection) {
                var b = document.selection.createRange(),
                    e = 0;
                b.moveStart("character", -a.value.length);
                a = b.text.split("");
                return e = a[a.length - 1].replace(/\r/g, "").length
            } else return a.selectionStart
        },
        countNum: function (a, b, e) {
            if (!(!a || a.innerHTML.hasString(_("超过")))) {
                var g = a.innerHTML.replace(/\D/g, "") || 0;
                g = e ? MI.number.format(parseInt(g.replace(/,/g, "")) + b) : parseInt(g) + b;
                a.innerHTML = g < 0 ? 0 : g
            }
        },
        countTxt: function (a, b) {
            var e = MI.string.length(a),
                g, h = 0,
                k = 0,
                j = a.match(RegExp(" ((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(\\.[-A-Za- z0-9]+)*(\\.[-A-Za-z]{2,5}))|([0-9]{1,3}(\\.[0-9]{1,3}){3}))(:[0-9]*)? (/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*)*", "gi")) || [];
            if (e < 500) {
                b && UI.each(j, function (l) {
                    a = a.replace(l, "_");
                    k++;
                    g = l.length;
                    if (g > 256) h += g - 256
                });
                e = Math.ceil((MI.string.length(UI.trim(a).replace(RegExp(_("#输入话题标题#"), "g"), "")) + k * 20 + h) / 2)
            }
            return e
        },
        fC: {
            numFormat: [],
            num: []
        },
        follow: function (a, b, e, g) {
            if (!MI.fC.init) {
                MI.fC.numFormat = f(".followNumFormat");
                MI.fC.num = f(".followNum");
                MI.fC.init = 1
            }(function () {
                if (!b.sending) {
                    var h = -1,
                        k;
                    k = b.className;
                    var j = c("followedNum_" + a),
                        l = c("followNum_" + a),
                        o = k != "addAttention" && k != "delAttention";
                    if (k == "addAttention" || o) {
                        h = 1;
                        k = "/follow.php"
                    } else k = "/unfollow.php";
                    b.sending = 1;
                    var m, q, p, r;
                    m = +new Date;
                    UI.ajax({
                        url: k,
                        data: {
                            u: a,
                            r: MI.random(),
                            veriCode: g || ""
                        },
                        success: function (s) {
                            q = +new Date - m;
                            b.sending = 0;
                            s = MI.json(s);
                            if (s.result == 0) {
                                if (!o) b.className = h == 1 ? "delAttention" : "addAttention";
                                j && MI.countNum(j, h);
                                l && MI.countNum(l, h);
                                for (var u = 0, x = MI.fC.numFormat.length; u < x; u++) MI.countNum(MI.fC.numFormat[u], h, 1);
                                u = 0;
                                for (x = MI.fC.num.length; u < x; u++) UI.A(MI.fC.num[u], "rel") == a && MI.countNum(MI.fC.num[u], h);
                                if (!UI.isUndefined(s.followTips)) MI.user.fun.followList = s.followTips;
                                if (MI.user.fun.followList && s.info && h == 1 && amp; !a.hasString(",")) MI.Tag && MI.Tag.sayHiStorage() == "" || MI.app({
                                    List: function () {
                                        MI.List.listFollow(a)
                                    }
                                });
                                e && e(h);
                                b.value = h == 1 ? _("取消收听") : _("收听");
                                h == 1 && MI.S("time", 0)
                            } else if (MI.code.check(s.result)) MI.code.show({
                                msg: s.msg,
                                code: s.info,
                                call: function (w) {
                                    MI.follow(a, b, e, w)
                                }
                            });
                            else s.msg && MI.alert(s.msg);
                            p = +new Date - m;
                            setTimeout(function () {
                                r = +new Date - m;
                                MI.Speed("t_asyn_follow", 0.1, q, p, r)
                            }, 0)
                        }
                    })
                }
            })()
        },
        sFollowTip: [_("添加到特别收听"), _("取消特别收听")],
        topic: function (a, b, e) {
            if (!b.sending) {
                var g = e || UI.hasClass(b, "delAttention"),
                    h = g ? "2" : "1",
                    k = c("gzTopic");
                k && UI.A(k, "tab", 2);
                UI.ajax({
                    url: "/asyn/topic.php",
                    data: {
                        tid: a,
                        type: h,
                        r: MI.random()
                    },
                    success: function (j) {
                        j = MI.json(j);
                        if (j.result == 0) {
                            if (e) {
                                var l = b.parentNode;
                                UI.animate(l, "opacity", 0, function () {
                                    UI.remove(l);
                                    MI.updateTopic()
                                })
                            } else {
                                b.className = g ? "addAttention" : "delAttention";
                                b.value = g ? _("收听") : _("取消收听");
                                MI.updateTopic()
                            }
                            MI.countNum(c("followedNum_" + a), g ? -1 : 1)
                        } else MI.alert(j.msg);
                        b.sending = 0
                    }
                })
            }
            b.sending = 1
        },
        topicDel: function (a, b) {
            MI.topic(a, b, 1)
        },
        topicOp: function (a, b, e) {
            if (b) {
                if (!b.sending) {
                    var g = e || UI.A(b, "fo") == "1",
                        h = c("gzTopic");
                    h && UI.A(h, "tab", 3);
                    UI.ajax({
                        url: "/asyn/messageSearch.php",
                        data: {
                            type: g ? 3 : 2,
                            name: a,
                            r: MI.random()
                        },
                        success: function (k) {
                            k = MI.json(k);
                            if (k.result == 0) if (e) {
                                var j = b.parentNode;
                                UI.animate(j, "opacity", 0, function () {
                                    UI.remove(j);
                                    MI.updateTopic()
                                })
                            } else {
                                b.innerHTML = g ? "+" + _("订阅关键词") : "-" + _("取消订阅");
                                UI.A(b, "fo", g ? "0" : "1");
                                MI.updateTopic()
                            }
                            b.sending = 0
                        }
                    })
                }
                b.sending = 1
            }
        },
        updateTopic: function (a, b) {
            if (a = a || c("gzTopic")) {
                var e = a.unfold || 0,
                    g = UI.A(a, "tab");
                if (b) e = e ? 0 : 1;
                var h = "t=topic&unfold=" + e + "&r=" + MI.random();
                if (g) h += "&tab=" + g;
                UI.get("/asyn/mysidebar.php", h, function (k) {
                    k = MI.json(k);
                    if (k.result == 0) {
                        if (k.info && k.info.topic) {
                            if (b) a.unfold = e;
                            a.innerHTML = k.info.topic;
                            UI.evalScript(k.info.topic)
                        }
                        MI.Load.bottom()
                    }
                });
                if (b) MI.Bos(e ? "btnMoreSub" : "btnLessSub")
            }
        },
        newCount: function (a, b, e) {
            function g() {
                var j = {
                    type: a
                };
                if (k < 6) {
                    if (MI.newCount.data) {
                        for (var l in MI.newCount.data) j[l] = MI.newCount.data[l];
                        if (MI.talkList && MI.talkList.first && MI.talkList.first.id && !MI.newCount.data.id) {
                            j.id = MI.talkList.first.id;
                            j.time = MI.talkList.first.time
                        }
                    }
                    var o, m, q;
                    o = +new Date;
                    if (MI.user.fun.newCount) {
                        j.cb = "MI.newCountShow";
                        h = "http://t.qq.com" + h;
                        var p = [];
                        for (l in j) p.push(l + "=" + j[l]);
                        h.hasString("?") || (h += "?");
                        UI.getScript(h + p.join("&"), function () {
                            m = +new Date - o;
                            setTimeout(function () {
                                q = +new Date - o;
                                MI.Speed("t_asyn_newmsg", 0.02, void 0, m, q)
                            }, 0)
                        }, "utf-8")
                    } else UI.get(h, j, function (r) {
                        r = MI.json(r);
                        MI.newCountShow(r);
                        m = +new Date - o;
                        setTimeout(function () {
                            q = +new Date - o;
                            MI.Speed("t_asyn_newmsg", 0.02, void 0, m, q)
                        }, 0)
                    })
                }
            }
            a = a || "4,3,2,1";
            var h = "/asyn/newMsgCount.php";
            if (b && typeof b == "string") h = b;
            b = 3E4;
            if (e && typeof e == "number") b = e * 1E3;
            setInterval(g, b);
            setTimeout(function () {
                g()
            }, 10);
            var k = 0;
            MI.newCountShow = function (j) {
                if (j.result == 0) {
                    var l, o, m, q, p;
                    UI.each(j.info, function (r) {
                        o = r.value;
                        if (r.type == 1) if ((l = c("newCountFollower")) && o) {
                            var s = l.firstChild;
                            c("followerNum");
                            m = 999;
                            s.innerHTML = o > m ? m + "+" : "+" + o;
                            s.title = _("有{0}个新听众", o > m ? _("超过") + m : o);
                            UI.addClass(UI.next(s), "bubble");
                            UI.show(l)
                        } else l && UI.hide(l);
                        if (r.type == 8) if ((l = c("newListonNum")) && o) {
                            s = l.firstChild;
                            m = 999;
                            s.innerHTML = o > m ? m + "+" : "+" + o;
                            s.title = _("有{0}个新名单收录你", o > m ? _("超过") + m : o);
                            UI.addClass(UI.next(s), "bubble");
                            UI.show(l)
                        } else l && UI.hide(l);
                        if (r.type == 2) if (l = c("newCoutMsg")) l.innerHTML = l & amp; & o ? " (" + o + ")" : "";
                        if ((r.type == 3 || r.type == 5 || r.type == 6 || r.type == 7 || r.type == 16 || r.type == 32) & amp; & !MI.noNewCount) if (MI.talkList && MI.talkList._new) {
                            m = 5E4;
                            if (r.type == 6 || r.type == 7) m = 100;
                            if (r.type == 16) m = 30;
                            q = o >= m ? _("超过< strong>{0}</strong>条的", m) : _("<strong>{0}</strong> 条", o);
                            p = MI.talkList._new;
                            p.innerHTML = '<a href="javascript:void(0)" tabindex="4">' + _("约{0}新广播,点击查看", q) + "</a>";
                            if (!document.titleTmp) document.titleTmp = document.title;
                            document.title = o > m ? "(" + m + "+) " + document.titleTmp : (o ? "(" + o + ") " : "") + document.titleTmp;
                            if (o) p.style.display = "block";
                            else UI.hide(p);
                            if (p.num != o) {
                                UI.C(p, "opacity", 0);
                                UI.animate(p, "opacity", 1)
                            }
                            p.num = o
                        }
                        if (r.type == 4) {
                            l = c("newCoutAt");
                            if (UI.isArray(o)) o = o[0];
                            if (l) l.innerHTML = l && o ? "(" + o + ")" : ""
                        }
                        if (r.type == 13) if (l = c("newCoutAt")) l.innerHTML = l && o ? "(" + o + ")" : ""
                    });
                    k = 0
                } else j.result == -1 && k++
            }
        },
        addHover: function (a) {
            var b, e;
            a.onmouseover = function () {
                var g = this;
                clearTimeout(e);
                b = setTimeout(function () {
                    UI.B.ie6 && UI.addClass(g, "hover")
                }, 20)
            };
            a.onmouseout = function () {
                var g = this;
                clearTimeout(b);
                e = setTimeout(function () {
                    UI.removeClass(g, "hover");
                    UI.removeClass(g, "newMsg")
                }, 20)
            }
        },
        bottom: function (a) {
            if (c(a)) {
                var b = f(".main .LC"),
                    e = UI.parents(c(a), "main")[0],
                    g, h = 0;
                if (e) g = e.parentNode;
                b.length || (b = f(".LC"));
                if ((b = b[b.length - 1]) && UI.height(c(a))) {
                    UI.C(b, "marginBottom", 0);
                    if (e) h = UI.height(e) - UI.height(g);
                    else {
                        g = c("mainWrapper");
                        UI.each(g.childNodes, function (k) {
                            if (k.nodeType == 1) h += UI.height(k)
                        });
                        h -= UI.height(g)
                    }
                    UI.C(b, "marginBottom", h < -1 ? -h + "px" : "")
                }
            }
        },
        goHome: function () {
            document.location.href = "/" + MI.user.account
        },
        reply: function (a, b, e) {
            MI.app({
                Base: function () {
                    MI.card.chName = a;
                    MI.card.bkname = MI.card.name = b;
                    MI.card._reply.onclick();
                    MI.card.reply.talkBox._txt.value = e || ""
                }
            })
        },
        chat: function (a, b, e) {
            MI.app({
                WebQQ: function () {
                    MI.WebQQ.chat(a, b, e)
                }
            })
        },
        recom: function (a, b) {
            MI.app({
                Base: function () {
                    MI.card.account = a;
                    MI.card.bkname = MI.card.name = b;
                    MI.card._recom.onclick()
                }
            })
        },
        message: function (a, b) {
            MI.app({
                Base: function () {
                    if (MI.user.fun.msgLab) MI.pmcompose(a, 3);
                    else {
                        MI.card.chName = a;
                        MI.card._msg.onclick();
                        MI.card.msg.talkBox._txt.value = b || ""
                    }
                }
            })
        },
        report: function (a) {
            a && a.match(/[^\d]/g) ? jubao_user(a) : jubao_msg(a)
        },
        alert: function (a, b) {
            a && MI.dialog.alert(a, b)
        },
        tip: function (a, b) {
            a && MI.dialog.showTip({
                html: a,
                end: b
            })
        },
        picError: function (a) {
            var b = a.src;
            if (b.hasString("qlogo.cn") || b.hasString("qpic.cn")) a.src = b.replace(/\/t[\d]/, "/tb");
            MI.Bos("btnOnerrorPic");
            a.onerror = null
        },
        version: function () {
            var a = {
                ui: {
                    DatePicker: "110303",
                    ColorPicker: "110107"
                },
                mi: {
                    Base: "110519",
                    City: "110406",
                    CityAll: "110406",
                    Validate: "110508",
                    ValidateNew: "110517",
                    RelateSelect: "110407",
                    Slide: "110402",
                    College: "110422",
                    Theme: "110307",
                    Tag: "110422",
                    List: "110519a",
                    SettingEdu: "110307",
                    SettingWork: "110518",
                    TalkListUpdate: "110505",
                    Scroll: "101111",
                    Capture: "110307",
                    Music: "110513",
                    QQMusicInstance: "110406a",
                    QQMusicPlayer: "110307",
                    QQMusicWmpPlayer: "110406a",