﻿var appDomain = undefined, appRefreshTime = 15000, myLastUpdateId = null;
var msg = new Array();
var page = {};
msg["0resetPassWord"] = "密码已发送到邮箱中";
msg["-1resetPassWord"] = "账号不存在";
msg["-2resetPassWord"] = "修改密码出现错误";
msg["-3resetPassWord"] = "请输入正确的Email账号";

msg["0removeTip"] = "设置成功";
msg["-1removeTip"] = "设置信息失败";

//msg["session"] = "会话超时，请重新<a href=\"/login\">登录</a>";



msg["1message_remove"] = "信息删除失败";
msg["message_remove_confirm"] = "你确定删除这条消息吗？";

msg["1message_private_remove"] = "私信删除失败";
msg["message_private_remove_confirm"] = "你确定要删除这条私信吗？";


msg["stock_remove_confirm"] = "你确定删除该股票吗？";
msg["stock_remove_fail"] = "删除股票失败";


msg["0all"] = "保存设置成功";
msg["-1all"] = "保存设置失败";

///new msg
msg["0favorite_insert"] = "收藏成功";
msg["0favorite_remove"] = "已删除收藏";
msg["00favorite_insert"] = "正在加入收藏中...";
msg["00favorite_remove"] = "正在取消收藏...";
msg["-1favorite_insert"] = "服务器异常，请稍候再试";
msg["-1favorite_remove"] = "服务器异常，请稍候再试";
msg["2update"] = "你什么都没说呢";
msg["3update"] = "收件人格式不正确";

msg["0ajax_msg"] = "留言发送成功！ ";
msg["1ajax_msg"] = "留言发送失败！ ";
msg["0ajax_private_msg"] = "私信已经发送给 {0}！";
msg["1ajax_private_msg"] = "私信发送给 {0} 失败！ ";

msg["1invation"] = "邮箱格式不正确";
var defaultUpdates = "";
var cfo = {
    homeTimer: null,
    searchTimer: null,
    cache: {
        updatecount: 0,
        isLoading: false,
        more_count: 0,
        favoriteHandle: null
    },
    url_home: "/home",
    tip: function(msg) {
        if (msg == "") {
            dojo.byId("_tip").style.display = "none";
            return;
        }
        dojo.byId("_content").innerHTML = msg;
        dojo.byId("_tip").style.display = "";
    },
    tipEffect: function(msg) {
        dojo.style("_tip", { opacity: 0, display: '' });
        dojo.byId("_content").innerHTML = msg;
        dojo.fadeIn({ node: dojo.byId("_tip"), duration: 700 }).play();
    },
    tipHidden: function() {
        dojo.anim("_tip", { opacity: 0 }, 700, null, function() { dojo.style("_tip", "display", "none") }, 10);
    },
    bind: function(parms) {
        var o = dojo.query("#" + parms).query("input,textarea");
        var _tmpData = new Array();
        dojo.forEach(o, function(item) {
            if (item.type != "button" && item.type != "submit")
                if (item.type == "checkbox") {
                _tmpData[item.name] = item.checked;
            } else
                if (item.name != "") _tmpData[item.name] = item.value;
        });
        return _tmpData;
    },
    auditingDialog: function(inputObj, showBody, callBack) {
        dojo.xhrPost({
            url: "/handlers/message.check.ashx",
            sync: false,
            handleAs: "json",
            content: { text: dojo.byId(inputObj).value },
            load: function(response, event) {
                if (response.state != 0) {
                    var f = dojo.body();
                    var _d = dijit.getViewport();
                    if (dojo.byId("__body") == null || dojo.byId("__body") == undefined) {
                        var _body = dojo.create("div", { id: '__body' }, dojo.doc.body);
                        dojo.style(_body, { zIndex: 100, position: 'absolute', width: f.scrollWidth + "px", height: f.scrollHeight + "px", top: "0px", left: "0px", backgroundColor: "#666", opacity: 0.3 });
                    } else
                        dojo.style("__body", "display", "");
                    var msgObj = dojo.byId("dialogAuditing");
                    dojo.style("dialogAuditing", "display", "");
                    dojo.style("dialogAuditing", { left: _d.w / 2 - (dojo.style("dialogAuditing", "width") / 2) + "px", top: _d.h / 2 - (232 / 2) + _d.t + "px", zIndex: 101 });
                    dojo.byId("submit_auditing").focus();
                } else {
                    if (callBack != null) callBack();
                }
            }
        });
        dojo.attr("submit_auditing", "inputobj", inputObj);
        dojo.attr("submit_auditing", "showBody", showBody);
        return false;
    },
    auditingDialogHidden: function() {
        dojo.style("dialogAuditing", "display", "none");
        if (!dojo.attr("submit_auditing", "showBody")) {
            dojo.style("__body", "display", "none");
        }
        setTimeout(function() {
            var inputId = dojo.attr("submit_auditing", "inputobj");
            dojo.byId(inputId).focus();
            cfo.fixTextareaCursorPosition(inputId);
        }, 50);
        return false;
    },
    ///删除消息后的黄色渐边提示效果
    deleteEffect: function(objId) {
        var blackToYellow = dojo.animateProperty({ node: objId, duration: 500, properties: { backgroundColor: { start: "#FFFFFF", end: "#FFFFB7"}} });
        var fadeOut = dojo.fadeOut({ node: objId, duration: 1000 });
        dojo.fx.combine([fadeOut, blackToYellow]).play();
        setTimeout(function() { dojo.destroy(objId); dojo.destroy(objId + "_"); }, 1000);
    },
    //删除消息
    message_delete: function(obj, isRedirect) {//
        if (confirm(msg["message_remove_confirm"])) {
            var _url = '/handlers/Destory.ashx?' + Math.random();
            var postData = { ajax: 'yes', mid: obj.mid };
            if (page && page['cross_domain']) {
                postData['cross_domain'] = "response";
                var a = dojo.io.script.get({
                    url: appDomain + _url,
                    content: postData,
                    checkString: "response",
                    load: function() {
                        cfo.message_delete_success(response, obj, isRedirect);
                        response = undefined;
                        dojo.io.script.remove("dojoIoScript" + a['id']);
                    }
                });
                return;
            }
            dojo.xhrPost({
                url: _url,
                sync: false,
                handleAs: "json",
                content: postData,
                load: function(response, event) {
                    cfo.message_delete_success(response, obj, isRedirect);
                }
            });
        }
    },
    message_delete_success: function(response, obj, isRedirect) {
        if (response.state == 0) {
            if (isRedirect) { location.href = "/home"; return; }
            cfo.deleteEffect(obj.id);
            dojo.byId('_total_tweet').innerHTML = parseInt(dojo.byId('_total_tweet').innerHTML) - 1;
        } else {
            alert(response.msg);
        }
    },
    message_private_delete: function(obj) {
        if (confirm(msg["message_private_remove_confirm"])) {
            dojo.xhrPost({
                url: "/handlers/Destory.ashx",
                sync: false,
                handleAs: "json",
                content: { ajax: 'yes', mid: obj.mid },
                load: function(response, event) {
                    if (response.state == 0) {
                        cfo.deleteEffect(obj.id);
                    } else {
                        alert(response.msg);
                    }
                }
            });
        }
    },
    message_system_delete_once: function(obj) {
        dojo.xhrPost({
            url: "/handlers/core.ashx",
            sync: false,
            handleAs: "json",
            content: { parms: 'message_remove_all', mids: obj.mid },
            load: function(response, event) {
                if (response.state == 0) {
                    cfo.deleteEffect(obj.id);
                    //如果只剩下一条提示 隐藏父节点
                    setTimeout(function() {
                        if (dojo.query("#system_all ul li").length == 0)
                            dojo.byId("system_all").style.display = "none";
                    }, 2000);
                } else {
                    alert(msg["-1message_remove"]);
                }
            }
        });
    },
    message_system_delete_all: function() {
        var objAll = dojo.byId("system_all");
        dojo.xhrPost({
            url: "/handlers/Destory.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            content: { ajax: 'yes', type: 'alert' },
            load: function(response, event) { }
        });
        cfo.deleteEffect(objAll);
    },
    message_system_show: function(isShow) {
        dojo.forEach(dojo.query("._who_hidden"), function(t) {
            dojo.style(t, "display", isShow ? '' : 'none');
        });
        dojo.style("_show_system_more", "display", isShow ? 'none' : '');
        dojo.style("_show_system_collapse", "display", isShow ? '' : 'none');
    },
    // 合并用户名 新的插到最前面 
    combine: function(name, nameString) {
        if (dojo.trim(nameString) == "$$" || dojo.trim(nameString) == "$") nameString = "";
        var seperator = ' ';
        var names = nameString.split(seperator);
        if (nameString.length == 0)
            return name + seperator;
        for (var i = 0, len = names.length; i < len; i++) {
            if (names[i] == name) {
                names.splice(i, 1);
                break;
            }
        }
        names.unshift(name);
        var result = names.join(seperator);
        if (result.lastIndexOf(" ") == -1)
            result += seperator;
        return result;
    }, //rid ,statusid 都是回复、转发消息的id 用做转发和回复区别
    set_reply: function(name, rid) {
        var m = dojo.byId("updateTextarea");
        if (!m) {
            location.href = this.url_home + "?tc=@" + encodeURIComponent(name) + " &rid=" + rid;
            return false;
        }
        if (dojo.byId("_doing").style.display == "none") dojo.byId("_doing").style.display = "";
        dojo.byId("replyId").value = rid;
        dojo.byId("statusId").value = '';
        m.value = cfo.combine("@" + name, m.value);
        m.focus();
        this.fixTextareaCursorPosition('updateTextarea');
        window.scrollTo(0, 0);
    },
    set_forward: function(objId, domain, statusid) {
        var m = dojo.byId("updateTextarea");
        if (m == null || m == undefined) {
            var d = dojo.query("#" + objId).query("._j");
            if (d && d[0]) {
                location.href = this.url_home + "?tc=" + encodeURIComponent(" 转: @" + domain + " " + d[0].innerHTML.replace(/<[^>].*?>/g, "")) + "&statusid=" + statusid;
                return false;
            }
            if (dojo.byId("detail_say")) {
                location.href = this.url_home + "?tc=" + encodeURIComponent(" 转: @" + domain + " " + dojo.byId("detail_say").innerHTML.replace(/<[^>].*?>/g, "")) + "&statusid=" + statusid;
                return false;
            }
        }
        if (dojo.byId("_doing").style.display == "none") dojo.byId("_doing").style.display = "";
        var tcc = dojo.query("#" + objId).query("._j")[0].innerHTML.replace(/<[^>].*?>/g, "");
        m.value = " 转: @" + domain + " " + cfo.HTMLDecode(dojo.trim(tcc));
        dojo.byId("statusId").value = statusid;
        dojo.byId("replyId").value = '';
        window.scrollTo(0, 0);
        cfo.setCursor(m);
        //转发消息不允许上传图片
        cfo.shortUploadPicDele(false, true);
        dojo.byId("imgpath").value = "";
        dojo.style("message_image", "display", "none");
    },
    HTMLDecode: function(str) {
        var s = "";
        if (str.length == 0) return "";
        s = str.replace(/&amp;/g, "&");
        s = s.replace(/&lt;/g, "<");
        s = s.replace(/&gt;/g, ">");
        s = s.replace(/&nbsp;/g, " ");
        s = s.replace(/&#39;/g, "\'");
        s = s.replace(/&quot;/g, "\"");
        return s;
    },
    show_menu: function(obj) {
        dojo.addClass(obj, "saymouse");
        //dojo.style(obj, "zIndex", "99");
    },
    hide_menu: function(obj) {
        dojo.removeClass(obj, "saymouse");
        //dojo.style(obj, "zIndex", "1");
    },
    Copy: function(obj) {
        try {
            obj.select();
            js = obj.createTextRange();
            js.execCommand("Copy")
            alert("复制成功，你可以粘帖到MSN或QQ中发给好友。")
        } catch (e) { }
    },
    closeTip: function(objId, _type) {
        dojo.byId(objId).style.display = 'none';
        dojo.xhrPost({
            url: "/handlers/user_log.ashx",
            sync: false,
            handleAs: "json",
            content: { type: _type }
        });
    },
    setting_msn_edit: function() {
        dojo.style("_msn_modify", "display", "none");
        dojo.style("_msn_modify1", "display", "");
        dojo.style("_msn_modify2", "display", "");
        dojo.style("_msn_modify3", "display", "");
    },
    changeSubmitDisabled: function(submitId) {
        if (!submitId) submitId = "__btn_submit";
        if (dojo.byId(submitId))
            dojo.byId(submitId).disabled = "disabled";
    },
    changeSubmitEnabled: function(submitId) {
        if (!submitId) submitId = "__btn_submit";
        if (dojo.byId(submitId))
            dojo.byId(submitId).disabled = false;
    },
    notVerifyForm: true, //不验证sendMsg 直接反回false，避免回车提交
    syncTime: function() {
        dojo.query("#timeline .say .cttime").forEach(function(t) {
            var data = dojo.attr(t, "data");
            if (data) {
                var tm = util.timeMeter(data);
                if (tm) t.innerHTML = tm;
            }
        });
    },
    sendMsg_prep: function(isAlert, isNoSubmit) {
        if (dojo.trim(dojo.byId("updateTextarea").value) == "") {
            if (isAlert) alert(msg["2update"]);
            dojo.byId("updateTextarea").focus();
            return false;
        }
        setTimeout(function() {
            dojo.byId("__btn_submit").disabled = "disabled";
        }, 10);
        dojo.byId('form1_sya').submit();
        return false;
    },
    //发表消息
    sendMsg: function() {
        if (!cfo.notVerifyForm) return false;
        try {
            var ubb = dojo.byId("ubb_stock");
            if (ubb.style.display == "") {
                return false; //如果打开了ubb对话框，回车则不提交
            }
        } catch (e) { ; }
        if (dojo.trim(dojo.byId("updateTextarea").value) == "") {
            alert(msg["2update"]);
            dojo.byId("updateTextarea").focus();
            return false;
        }
        if (dojo.style("privatemsg2", "display") != "none" && dojo.byId("reciverid").value == "") {
            alert(msg["3update"]);
            return false;
        }
        cfo.sendMsgCore();
    },
    sendMsgCore: function() {
        //ajax 提交
        dojo.byId("__btn_submit").innerHTML = "<img src='http://g1.ssimg.cn/ganniu/s/100203/images/progress.gif' alt='loading' />";
        dojo.byId("__btn_submit").disabled = "disabled";
        var _url = "/handlers/update.ashx?" + Math.random();
        if (page && page['cross_domain']) {
            var postData = cfo.bind("form1_sya");
            postData['cross_domain'] = "response";
            var a = dojo.io.script.get({
                url: appDomain + _url,
                content: postData,
                checkString: "response",
                load: function() {
                    cfo.sendMsgCoreSuccess(response);
                    response = undefined;
                    dojo.io.script.remove("dojoIoScript" + a['id']);
                }
            });
            return;
        }
        dojo.xhrPost({
            url: _url,
            sync: false,
            handleAs: "json",
            content: cfo.bind("form1_sya"),
            load: function(response, event) {
                cfo.sendMsgCoreSuccess(response);
            }
        });
    },
    sendMsgCoreSuccess: function(response) {
        if (response.state == 0) {
            dojo.byId('updateTextarea').value = defaultUpdates;
            if (dojo.byId("isAppendTimeLine")) {
                if (response.timeline != "") {
                    var result = dojo.query(dojo.create("div", { innerHTML: response.timeline })).query(".say").addClass("mine");
                    dojo.query("#timeline").addContent(result[0], "first");
                    var unkown = dojo.byId("_control_00");
                    if (unkown) unkown.parentNode.removeChild(unkown);
                    cfo.syncTime();
                }
            }
            //更新上次发表
            if (dojo.style("_latest", "display") != "none" && response.lasttweet != "") {
                dojo.byId("_latest").innerHTML = response.lasttweet;
                cfo.shortUploadPicDele(true, false);
            }
            //更新消息总数
            if (dojo.byId("reciverid").value == "") dojo.byId('_total_tweet').innerHTML = parseInt(dojo.byId('_total_tweet').innerHTML) + 1;
            //更新sine_id
            if (dojo.byId("since_id")) dojo.byId("since_id").value = response.since_id;
            myLastUpdateId = response.since_id;
            dojo.byId("reciverid").value = "";
            dojo.byId("replyId").value = "";
            dojo.byId("statusId").value = "";
            if (dojo.byId("friendselect")) dojo.byId("friendselect").value = "输入昵称查找...";
        }
        cfo.tipEffect(response.msg);
        dojo.byId("__btn_submit").innerHTML = "发送";
        dojo.byId("__btn_submit").disabled = false;
        dojo.byId('updateTextarea').focus();
        //UD.state = response.session;
    },
    sendMsgByEnter: function(e) {
        if (!checkSubmit(dojo.byId("updateTextarea"), dojo.byId("_checkNum"))) return false;
        if (dojo.style("privatemsg2", "display") != "none" && dojo.byId("reciverid").value == "") {
            return false;
        }
        cfo.sendMsgCore();
        //关键字审核
        //cfo.auditingDialog("updateTextarea", false, function() { cfo.changeSubmitDisabled(); dojo.byId('form1_sya').submit(); });
        //return false;
    },
    sendDialogMsg: function(dialogID, showBody) {
        var _type = dojo.byId("msgtype").value;
        if (_type == 0) {//leavemsg
            var _txtMsg = "@" + dojo.trim(dojo.byId("reciverName").value);
            if (dojo.trim(dojo.byId("updateTextareaDialog").value).indexOf(_txtMsg) != 0) {
                alert("留言必须以" + _txtMsg + "+空格 开头，这样你的关注者才能收到你发的消息。");
                return false;
            }
            dojo.byId("reciverid").value = "";
            dojo.byId("ajaxMethod").value = "yes";
        } else if (_type == 1) {//privatemsg
            if (dojo.trim(dojo.byId("updateTextareaDialog").value) == "") {
                alert(msg["2update"]);
                dojo.byId("updateTextareaDialog").focus();
                return false;
            }
            dojo.byId("ajaxMethod").value = "";
            dojo.byId("form1_sya").submit();
            return false;
        }
        cfo.changeSubmitDisabled("__btn_submit");
        if (!checkSubmit(dojo.byId("updateTextareaDialog"), dojo.byId("_checkNum"))) return false;
        //关键字审核
        cfo.sendDialogMsgAjax();
        return false;
    },
    sendDialogMsgAjax: function() {
        var _url = "/handlers/update.ashx?" + Math.random();
        if (page && page['cross_domain']) {
            var postData = cfo.bind("dialogSendMsg");
            postData['cross_domain'] = "response";
            var a = dojo.io.script.get({
                url: appDomain + _url,
                content: postData,
                checkString: "response",
                load: function() {
                    success(response);
                    response = undefined;
                    dojo.io.script.remove("dojoIoScript" + a['id']);
                }
            });
            return;
        }
        dojo.xhrPost({
            url: _url,
            sync: false,
            handleAs: "json",
            content: cfo.bind("dialogSendMsg"),
            load: function(response, event) {
                success(response);
            }
        });
        function success(response) {
            cfo.hiddenMsgDialog();
            cfo.tipEffect(response['msg']);
            dojo.byId("updateTextareaDialog").value = "";
            cfo.changeSubmitEnabled('__btn_submit');
        }
    },
    getInvationUrl: function() {
        dojo.byId("invite_button").disabled = "disabled";
        dojo.style("invite_url_div", "display", "none");
        dojo.style("invite_loading", "display", "");
        dojo.xhrPost({
            url: "/handlers/invation.insert.ashx",
            sync: false,
            handleAs: "json",
            content: { invationEmail: encodeURIComponent("direct"), type: 'direct' },
            load: function(response, event) {
                if (response.state) {
                    var invite_urlObj = dojo.byId("invite_url"),
                        invate_countObj = dojo.byId('invation_count');
                    invite_urlObj.value = response.invation_url;
                    invate_countObj.innerHTML = parseInt(invate_countObj.innerHTML) - 1 + "个";
                    dojo.style("invite_url_div", "display", "");
                } else {
                    alert(response.msg);
                    dojo.style("invite_url_div", "display", "none");
                }
                dojo.byId("invite_button").disabled = false;
                dojo.style("invite_loading", "display", "none");
            }
        });
    },
    keyDown: function(Fun, e) {
        var keycode;
        if (dojo.isIE)
            keycode = e.keyCode;
        else
            keycode = e.which;
        if (keycode == 13) {
            if (Fun != null) Fun();
        }
    },
    /**
    * 通过ctrl enter来操作
    * @param {string | HTMLElement} el 需要操作的元素id或者引用
    * @param {function} fSubcribe ctrlEnter后需要执行的函数
    */
    ctrlEnter: function(e, Fun) {
        if (dojo.isIE) {
            if (e.ctrlKey && window.event.keyCode == 13) { Fun(e); }
        } else {
            var evt = dojo.fixEvent(e || window.event);
            var keyCode = evt.keyCode;
            var charCode = evt.charCode;
            var resCode = keyCode || charCode;
            if ((evt.ctrlKey || evt.ctrlKey == 17) && resCode == 13) {
                Fun(e);
            }
        }
    },
    /**
    * focus 后光标位置不正确(最前面)的修复方案
    * @param {string | HTMLElement} elTextarea textarea 元素的 id 或引用
    */
    fixTextareaCursorPosition: function(parmsId) {
        var elTextarea = dojo.byId(parmsId);
        if (dojo.isIE || dojo.isOpera) {
            var rng = elTextarea.createTextRange();
            rng.text = elTextarea.value;
            rng.collapse(false);
        } else if (dojo.isWebKit) {
            elTextarea.select();
            window.getSelection().collapseToEnd();
        }
    },
    setCursor: function(oElement) {
        //set cursor
        if (dojo.isIE || dojo.isOpera) {
            var rng = oElement.createTextRange();
            rng.moveEnd('character', oElement.value.length);
            rng.collapse(true);
            rng.select();
        } else {
            oElement.setSelectionRange(0, 0);
            oElement.focus();
        }
    },
    stock: function(obj) {
        if (confirm(msg["stock_remove_confirm"])) {
            dojo.xhrPost({
                url: "/portfolio.manage",
                sync: false,
                handleAs: "json",
                content: obj,
                load: function(response, event) {
                    if (response.state == 0) {
                        cfo.deleteEffect(obj.id);
                    } else
                        alert(msg["stock_remove_fail"]);
                    //更新序号
                    setTimeout(function() {
                        var __stock_tr = dojo.query(".__stock_tr");
                        var _index = 0;
                        dojo.forEach(__stock_tr, function(t) {
                            t.innerHTML = ++_index;
                        });
                    }, 1000);
                },
                error: function(response, event) { },
                mimetype: "application/json-comment-filtered"
            });
        }
    },
    follow: function(obj, ee) {
        var objF = dojo.byId(ee);
        var parms = objF.innerHTML == "取消关注" ? "follow.deleteAsyn" : "follow.insertAsyn";
        var parmsCall = objF.innerHTML == "取消关注" ? "follow.insertAsyn" : "follow.deleteAsyn";
        dojo.xhrPost({
            url: "/handlers/core.ashx",
            sync: false,
            handleAs: "json",
            content: { parms: parms, followid: obj.followid, username: obj.username },
            load: function(response, event) {
                if (response.state == 0) {
                    if (objF.innerHTML == "取消关注") {
                        cfo.tip("");
                        dojo.attr(objF, "className", "followme")
                        objF.innerHTML = "关注此人";
                    } else {
                        cfo.tipEffect(response.tip);
                        dojo.attr(objF, "className", "nofollow fr")
                        objF.innerHTML = "取消关注";
                    }
                } else {

                }
            },
            error: function(response, event) { },
            mimetype: "application/json-comment-filtered"
        });
    },
    followAsyn: function(obj, callback) {
        dojo.xhrPost({
            url: "/handlers/core.ashx",
            sync: false,
            handleAs: "json",
            content: { parms: "follow.insertAsyn", followid: obj.followid, username: obj.username },
            load: function(response, event) {
                if (response.state == 0) {
                    cfo.tipEffect(response.tip);
                    obj.id.onclick = null;
                    obj.id.parentNode.innerHTML = "开始关注了你（是我关注的人）";
                    callback();
                } else {

                }
            }
        });
    },
    followAsyn2: function(obj) {
        dojo.xhrPost({
            url: "/handlers/core.ashx",
            sync: false,
            handleAs: "json",
            content: { parms: "follow.insertAsyn", followid: obj.followid, username: obj.username },
            load: function(response, event) {
                if (response.state == 0) {
                    cfo.tipEffect(response.tip);
                    obj.id.onclick = null;
                    obj.id.style.display = "none";
                    obj.id.parentNode.innerHTML = "<span class=\"followok\">已关注</span>" + obj.id.parentNode.innerHTML;
                } else {

                }
            }
        });
    },
    favorite: function(obj) {
        var a = dojo.query("#" + obj.controlId + " .sysfav")[0];
        if (!a) {
            var msgObj = dojo.query("#" + obj.controlId + " .sayControl")[0];
            if (msgObj) {
                a = dojo.create("div", { innerHTML: msg["00" + obj.parms] }, msgObj, 'last');
                dojo.attr(a, "className", "sysfav");
            }
        } else {
            a.innerHTML = msg["00" + obj.parms];
        }
        var postData = { ajax: 'yes', messageId: obj.mid };
        var _url = (obj['type'] == "remove" ? "/handlers/FavoritesDestory.ashx" : "/handlers/FavoritesCreate.ashx") + "?" + Math.random();
        if (page && page['cross_domain']) {
            postData['cross_domain'] = "response";
            var abb = dojo.io.script.get({
                url: appDomain + _url,
                content: postData,
                checkString: "response",
                load: function() {
                    cfo.favorite_success(response, obj, a);
                    response = undefined;
                    dojo.io.script.remove("dojoIoScript" + abb['id']);
                }
            });
            return;
        }
        dojo.xhrPost({
            url: _url,
            sync: false,
            handleAs: "json",
            content: postData,
            load: function(response, event) {
                cfo.favorite_success(response, obj, a);
            }
        });
    },
    favorite_success: function(response, obj, a) {
        if (a) {
            setTimeout(function() { a.innerHTML = msg[response.state + obj.parms]; }, 1000);
            setTimeout(function() { dojo.fadeOut({ node: a, duration: 1000 }).play(); }, 2000);
        }
        if (response.state == 0) {
            var _favclass = obj.type == "remove" ? "cz6" : "cz1";
            var _favobj = dojo.query("#" + obj.controlId + " ." + _favclass + "")[0];
            var b = dojo.query("#" + obj.controlId + " .favstar")[0];
            if (!b) {
                b = dojo.create("div", null, dojo.query("#" + obj.controlId + " .sayControl")[0], 'after');
            } else {
                dojo.removeClass(b, 'nodisplay');
            }
            if (obj.parms == "favorite_insert2") {
                dojo.style("_signle_fav_destory", "display", "");
                dojo.style("_signle_fav_create", "display", "none");
                cfo.tipEffect(msg["0favorite_insert"]);
            } else if (obj.parms == "favorite_remove2") {
                dojo.style("_signle_fav_destory", "display", "none");
                dojo.style("_signle_fav_create", "display", "");
                cfo.tipEffect(msg["0favorite_remove"]);
            } else if (obj.type == "insert") {
                dojo.attr(_favobj, "title", "取消");
                dojo.attr(b, "className", "favstar");
                dojo.attr(_favobj, "class", "cz6");
                // _favobj.onclick = null;
                //dojo.disconnect(cfo.cache['favoriteHandle']);
                (function(el) {
                    el.href = "javascript:cfo.favorite({ parms: 'favorite_remove', mid: " + obj.mid + ", type: 'remove', controlId: '" + obj.controlId + "' });";
                })(_favobj);
                //cfo.cache['favoriteHandle'] = dojo.connect(_favobj, "onclick", { parms: 'favorite_remove', mid: obj.mid, type: 'remove', controlId: '' + obj.controlId + '' }, cfo.favorite);
                //_favobj.onclick = function() { cfo.favorite({ parms: 'favorite_remove', mid: obj.mid, type: 'remove', controlId: '' + obj.controlId + '' }) };
            } else if (obj.type == "remove") {
                dojo.attr(_favobj, "title", "收藏");
                dojo.attr(_favobj, "class", "cz1");
                dojo.destroy(b);
                //_favobj.onclick = null;
                //dojo.disconnect(cfo.cache['favoriteHandle']);
                //cfo.cache['favoriteHandle'] = dojo.connect(_favobj, "onclick", { parms: 'favorite_insert', mid: obj.mid, type: 'insert', controlId: '' + obj.controlId + '' }, cfo.favorite);
                //_favobj.onclick = function() { cfo.favorite({ parms: 'favorite_insert', mid: obj.mid, type: 'insert', controlId: '' + obj.controlId + '' }) };
                (function(el) {
                    el.href = "javascript:cfo.favorite({ parms: 'favorite_insert', mid: " + obj.mid + ", type: 'insert', controlId: '" + obj.controlId + "' });";
                })(_favobj);
            }
            if (a) { setTimeout(function() { dojo.destroy(a); }, 3000); }
        }
    },
    followRemove: function(obj) {
        dojo.byId("_tmp_followName").value = "";
        dojo.byId("_tmp_parms").value = "follow.delete";
        dojo.byId("_tmp_followid").value = obj.followid;
        dojo.byId("_tmp_followform").submit();
    }, followInsert: function(obj) {
        dojo.byId("_tmp_parms").value = "follow.insert";
        dojo.byId("_tmp_followName").value = obj.followName;
        dojo.byId("_tmp_followid").value = obj.followid;
        dojo.byId("_tmp_followform").submit();
    },
    showInfoMore: function(parms) {
        if (parms == "show") {
            dojo.forEach(dojo.query(".info_more2"), function(obj) {
                dojo.style(obj, "display", "");
            });
            dojo.style(dojo.query(".info_more3")[0], "display", "none");
        } else if (parms == "unshow") {
            dojo.forEach(dojo.query(".info_more2"), function(obj) {
                dojo.style(obj, "display", "none");
            });
            dojo.style(dojo.query(".info_more3")[0], "display", "");
        }
    },
    showMyDiv: function(ee, objId, parms) {
        if (dojo.style(objId, "display") == "none" || parms == "show") {
            dojo.attr(ee, "className", "btnHid");
            dojo.fx.wipeIn({ node: objId, duration: 250 }).play();
            dojo.cookie(objId + "_1223", "false", { domain: 'ganniu.com', expires: 14 });
        } else {
            dojo.attr(ee, "className", "btnShow");
            dojo.fx.wipeOut({ node: objId, duration: 250 }).play();
            dojo.cookie(objId + "_1223", "true", { domain: 'ganniu.com', expires: 14 });
        }
    }, init_showMyDiv: function() {
        try {
            if (dojo.cookie("_follow_1223") == "true") {
                dojo.style("_follow", "display", "none");
                dojo.attr("_btnShow", "className", "btnShow");
            }
            if (dojo.cookie("search_hot_word_1223") == "true") {
                dojo.style("search_hot_word", "display", "none");
                dojo.attr("_btnHid", "className", "btnShow");
            }
        } catch (e) { }
    },
    showQuote: function(obj, code, mark, name) {
        var _imgobj = dojo.byId(obj).getElementsByTagName("img");
        dojo.style(obj, "zIndex", "1");
        var _stockImgsrc = 'http://hschart.stockstar.com/ChartServer.aspx?mk=' + mark + '&code=' + code + '&freq=1&timeframe=1&width=160&height=100&r=' + Math.random();
        if (_imgobj[0]) {
            _imgobj[0].src = _stockImgsrc;
            dojo.style(_imgobj[0], "display", "");
        } else {
            dojo.create("img", { className: 'quotepic', alt: name, title: name, src: _stockImgsrc }, obj);
        }
    },
    hiddenQuote: function(obj, code, mark) {
        var _imgobj = dojo.byId(obj).getElementsByTagName("img");
        dojo.style(obj, "zIndex", "0");
        if (_imgobj) {
            dojo.style(_imgobj[0], "display", "none");
        }
    },
    SendMsgFromDialog2: function(evt, _dname, type, _duid, _dmid) {
        //没有登录 跳转到登录页面
        if (!UD.state) {
            location.href = "/login?where=" + dojo.byId("where").value;
            return;
        }
        //var _cObj = dojo.fixEvent(evt||window.event);
        var f = dojo.body();
        var _d = dijit.getViewport();
        if (dojo.byId("__body") == null || dojo.byId("__body") == undefined) {
            var _body = dojo.create("div", { id: '__body' }, dojo.doc.body);
            dojo.style(_body, { zIndex: 100, position: 'absolute', width: f.scrollWidth + "px", height: f.scrollHeight + "px", top: 0 + "px", left: 0 + "px", backgroundColor: "#666", opacity: 0.3 });
        } else
            dojo.style("__body", "display", "");
        var msgObj = dojo.byId("dialogSendMsg");
        //540 232 固定dialogSendMsg宽高  ( for fixed opera bug)
        dojo.style("dialogSendMsg", { display: '', left: _d.w / 2 - (540 / 2) + "px", top: _d.h / 2 - (232 / 2) + _d.t + "px", zIndex: 101 });

        dojo.byId("_dtitle").innerHTML = type == 0 ? "给 " + _dname + " 留言" : "向 " + _dname + " 发送私信";
        dojo.byId("msgtype").value = type;
        if (type == 0) {
            dojo.byId('updateTextareaDialog').value = "@" + _dname + " ";
            dojo.byId("reciverName").value = _dname;
        } else if (type == 1) {
            dojo.byId('updateTextareaDialog').value = "";
            dojo.byId("reciverid").value = _duid;
        }
        dojo.byId("updateTextareaDialog").focus();
        cfo.fixTextareaCursorPosition('updateTextareaDialog');
    },
    hiddenMsgDialog: function() {
        try {
            dojo.style("__body", "display", "none");
            dojo.style("dialogSendMsg", "display", "none");
        } catch (e) { }
    },
    shortcutDolorsign: function() {
        dojo.byId("nameselect").value = "";
        dojo.style("ubb_stock", "display", "");
        dojo.byId("nameselect").focus();
    },
    shortcutDodo: function() {
        var objIn = dojo.byId("updateTextarea");
        if (objIn.value.indexOf("$$") != 0) {
            if (objIn.value.indexOf("$$") == 0) {
                objIn.value = " " + objIn.value.substring(1);
            } else {
                objIn.value = "$$ " + objIn.value;
            }
        }
        objIn.focus();
        cfo.fixTextareaCursorPosition(objIn); //修正光标
    },
    shortUploadPic: function() {
        var extArr = dojo.byId('message_file').value.split('.');
        ext = extArr[extArr.length - 1].toLowerCase();
        if (ext != "jpg" && ext != "gif" && ext != "jpeg" && ext != "png") {
            alert("请上传jpg、jpeg、gif、png格式的图片。");
            return;
        }
        if (dojo.byId('message_file').value != "") {
            dojo.byId("message_image_form").submit();
            dojo.style("message_file", "display", "none");
            dojo.byId('ubb_img_txt').innerHTML = "请等待图片上传";
        }
    },
    shortUploadPicCallBack: function(obj) {
        if (obj.state == 1) {
            alert("图片不可以为空。");
            dojo.byId('ubb_img_txt').innerHTML = "上传图片";
            cfo.newImageFile();
            return;
        }
        else if (obj.state == 2) {
            alert("请上传小于5M大小的图片。");
            dojo.byId('ubb_img_txt').innerHTML = "上传图片";
            cfo.newImageFile();
            return;
        }
        else if (obj.state == 3) {
            alert("图片格式错误。");
            dojo.byId('ubb_img_txt').innerHTML = "上传图片";
            cfo.newImageFile();
            return;
        } else if (obj.state != 0) {
            alert("上传图片失败。");
            dojo.byId('ubb_img_txt').innerHTML = "上传图片";
            cfo.newImageFile();
            return;
        }
        cfo.shortPrePicture(obj);
    },
    shortPrePicture: function(obj) {
        dojo.byId('message_file').value = '';
        dojo.style("fbbimgparent", "display", "");
        dojo.style("message_image", "display", "none");
        dojo.attr("fbbimgprev", { src: 'http://g1.ssimg.cn/ganniu/s/100203/images/progress.gif', width: 16, height: 16 });
        dojo.attr("imgpath", "value", obj.src);
        dojo.byId("fbbimgname").innerHTML = util.subString(obj.name, 20, true);
        dojo.style("fbqimgclose", "display", "");
        //加载预览图
        util.loadimg(obj.src, function(img) {
            var _size = util.getImageSize(img, 120, 120);
            dojo.attr("fbbimgprev", { src: img.src, width: _size.w, height: _size.h });
            img = null;
        });
    },
    shortUploadPicDele: function(isCreateNewInputFile, isDeletePic) {
        dojo.style("fbbimgparent", "display", "none");
        dojo.style("fbqimgclose", "display", "none");
        dojo.style("message_image", "display", "");
        dojo.style("message_file", "display", "");
        dojo.byId('ubb_img_txt').innerHTML = "上传图片";
        dojo.byId("fbbimgname").innerHTML = '';
        dojo.attr("fbbimgprev", { src: '', width: 0, height: 0 });
        if (isCreateNewInputFile)
            cfo.newImageFile();
        //删除除片
        var _path = dojo.byId("imgpath").value;
        if (_path != "" && isDeletePic) {
            var _url = "/handlers/picdelete.ashx?" + Math.random();
            if (page && page['cross_domain']) {
                var a = dojo.io.script.get({
                    url: _url,
                    content: { path: _path },
                    load: function() {
                        dojo.io.script.remove("dojoIoScript" + a['id']);
                    }
                });
                return;
            }
            dojo.xhrPost({
                url: _url,
                sync: false,
                handleAs: "json",
                content: { path: _path }
            });
        }
        dojo.byId("imgpath").value = "";
    },
    newImageFile: function() {
        var file = document.createElement("INPUT"),
            oldimgFile = dojo.byId('message_file');
        file.type = "file";
        file.size = "1";
        file.name = "pic1";
        file.id = "message_file";
        file.style.cssText = "cursor:pointer;position:absolute; left:205px; top:0px;opacity:0; overflow:hidden; height:22px; width:75px;filter: alpha(Opacity=0);";
        oldimgFile.parentNode.insertBefore(file, oldimgFile);
        oldimgFile.parentNode.removeChild(oldimgFile);
        oldimgFile = file;
        dojo.connect(oldimgFile, "onchange", cfo.shortUploadPic);
    },
    app_stock_insert: function(formId) {
        setTimeout("dojo.byId('" + formId + "').submit()", 200);
        dojo.attr(formId, "onsubmit", "null");
        return false;
    },
    checkInvationEmail: function() {
        var _value = dojo.trim(dojo.byId("invationEmail").value);
        var _pa = /^[\w\.\-\+]+@([\w\-]+\.)+[a-z0-9]{1,4}$/i;
        if (!_pa.test(_value)) {
            dojo.byId("invationEmail").focus();
            dojo.byId("invationEmail").select();
            alert(msg["1invation"]);
            return false;
        }
        return true;
    },
    getNewMsg: function() {
        dojo.xhrPost({
            url: "/handlers/home.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            content: { since_id: dojo.byId("since_id").value, contain: true },
            load: function(response, event) {
                if (response.count && response.count > 0) {
                    dojo.byId("since_id").value = response.since_id;
                    var result = dojo.query(dojo.create("div", { innerHTML: response.timeline })).query(".say").addClass("saybuffered");
                    $timeline = dojo.query("#timeline");
                    dojo.forEach(result, function(t) {
                        if (t.id == "_control_" + myLastUpdateId) {
                            response.count -= 1; //剔除刚才自己发表的消息
                        } else {
                            $timeline.addContent(t, "first")
                        }
                    });
                    if (response.count > 0) {
                        //显示提示
                        dojo.style("newcall", { display: '', opacity: 0 });
                        dojo.byId("newcall_tip").href = "javascript:cfo.jumpRefresh();";
                        dojo.fadeIn({ node: dojo.byId("newcall"), duration: 800 }).play();
                        cfo.cache['updatecount'] += response.count;
                        dojo.byId("newcall_tip").innerHTML = dojo.byId("newcall_tip").innerHTML.replace(/\d+/, cfo.cache['updatecount']);
                        document.title = "(" + cfo.cache['updatecount'] + ") " + document.title.replace(/\(\d+\)\s/, '');
                    }
                }
                cfo.homeTimer = setTimeout(cfo.getNewMsg, appRefreshTime);
            }
        });
    },
    getSearchNotice: function(_q) {//searchTimer
        if (!UD['state']) return;
        dojo.xhrPost({
            url: "/handlers/searchNotice.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            content: { maxId: dojo.byId("since_id").value, q: _q },
            load: function(response, event) {
                if (response.count && response.count > 0) {
                    dojo.style("newcall", { display: '', opacity: 0 });
                    dojo.byId("newcall_tip").href = location.pathname + "?q=" + _q;
                    dojo.fadeIn({ node: dojo.byId("newcall"), duration: 800 }).play();
                    dojo.byId("newcall_tip").innerHTML = dojo.byId("newcall_tip").innerHTML.replace(/\d+/, response.count);
                    document.title = "(" + response.count + ") " + document.title.replace(/\(\d+\)\s/, '');
                }
                cfo.searchTimer = setTimeout(function() { cfo.getSearchNotice(_q); }, appRefreshTime);
            }
        });
    },
    getBrowseNotice: function() {
        if (!UD['state']) return;
        dojo.xhrPost({
            url: "/handlers/browseNotice.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            content: { maxId: dojo.byId("since_id").value },
            load: function(response, event) {
                if (response.count && response.count > 0) {
                    dojo.style("newcall", { display: '', opacity: 0 });
                    dojo.byId("newcall_tip").href = "/browse.html";
                    dojo.fadeIn({ node: dojo.byId("newcall"), duration: 800 }).play();
                    dojo.byId("newcall_tip").innerHTML = dojo.byId("newcall_tip").innerHTML.replace(/\d+/, response.count);
                    document.title = "(" + response.count + ") " + document.title.replace(/\(\d+\)\s/, '');
                }
                setTimeout(cfo.getBrowseNotice, appRefreshTime);
            }
        });
    },
    getNextMsg: function(url, postData) {
        dojo.style("pageControlImg", "display", "");
        dojo.style("pageControl", "display", "none");
        if (!postData) {
            postData = { max_id: dojo.byId("max_id").value };
        } else {
            postData["max_id"] = dojo.byId("max_id").value;
        }
        if (page && page['cross_domain']) {
            postData['cross_domain'] = "response";
            var a = dojo.io.script.get({
                url: appDomain + url + Math.random(),
                content: postData,
                checkString: "response",
                load: function() {
                    cfo.getNextMsgSuccess(response);
                    response = undefined;
                    dojo.io.script.remove("dojoIoScript" + a['id']);
                }
            });
            return;
        }
        dojo.xhrPost({
            url: url + Math.random(),
            sync: false,
            handleAs: "json",
            content: postData,
            load: function(response, event) {
                cfo.getNextMsgSuccess(response);
            }
        });
    },
    getNextMsgSuccess: function(response) {
        if (response) {
            dojo.byId("max_id").value = response.max_id;
            dojo.query("#timeline .say:last-child").addClass("saylastPage");
            dojo.query("#timeline").addContent(response.timeline);
            if (response.page_navigation && response.is_next_page) {
                dojo.style("pageControl", "display", "");
                dojo.style("pageReturn", "display", "");
                dojo.byId("pageControl").innerHTML = response.page_navigation;
            } else {
                dojo.style("pageControl", "display", "none");
                dojo.style("pageControl", "display", "none");
            }
            dojo.style("pageControlImg", "display", "none");
            cfo.syncTime();
            cfo.cache['more_count'] += 1;
            if (page && page['more_count'] && cfo.cache['more_count'] >= page['more_count']) {
                dojo.style("pageControl", "display", "none");
                dojo.style("pageControl", "display", "none");
            }
        }
    },
    getFriend: function() {
        dojo.xhrPost({
            url: "/handlers/friend.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            load: function(response, event) {
                if (response) {
                    dojo.byId("name_all_hidden").value = response.data;
                    appBox.init();
                }
            }
        });
    },
    reloadHome: function(el) {
        cfo.updateLocation("home");
        cfo.reloadCore(el, "/handlers/home.ashx?", { since_id: 0, contain: true }, null, { title: "首页" }, function() { cfo.setDmorNoramlMsg(false, true); });
        cfo.homeTimer = setTimeout(cfo.getNewMsg, appRefreshTime);
        if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
        return false;
    },
    reloadFavorites: function(el) {
        dojo.query("._forhome").style("display", "none");
        cfo.updateLocation("favorites");
        cfo.reloadCore(el, "/handlers/Favorites.ashx?", { since_id: 0, contain: true }, null, { title: "我的收藏" }, function() { cfo.setDmorNoramlMsg(false, false); });
        if (cfo.homeTimer) clearTimeout(cfo.homeTimer);
        if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
        return false;
    },
    reloadMentions: function(el) {
        dojo.query("._forhome").style("display", "none");
        cfo.updateLocation("mentions");
        cfo.reloadCore(el, "/handlers/Mentions.ashx?", { since_id: 0, contain: true }, null, { title: "消息中的提到我的..." }, function() { cfo.setDmorNoramlMsg(false, false); dojo.byId("_dy_Mentions").innerHTML = "@提到我的"; });
        if (cfo.homeTimer) clearTimeout(cfo.homeTimer);
        if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
        return false;
    },
    reloadSearch: function(el, _q, s_current) {
        dojo.query("._forhome").style("display", "none");
        if (!_q) {
            _q = dojo.byId("home_q").value;
        }
        if (location.pathname.indexOf('/home') == 0 || location.pathname.indexOf('/browse') == 0) {
            var title = "关于 <span class=\"cRed\">" + _q + "</span> 的最新消息";
            cfo.reloadCore(el, "/handlers/Search.ashx?", { since_id: 0, q: encodeURIComponent(_q) }, s_current, { title: title }, function() { cfo.setDmorNoramlMsg(false, false); });
            if (cfo.homeTimer) { clearTimeout(cfo.homeTimer); }
            if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
            //开始计数
            setTimeout(function() { cfo.getSearchNotice(encodeURIComponent(_q)); }, appRefreshTime);
            return false;
        }
        location.href = (!UD['state'] ? "/browse" : "/home") + "?q=" + encodeURIComponent(_q);
        return false;
    },
    reloadPrivateMsg: function(el) {
        dojo.query("._forhome").style("display", "none");
        cfo.updateLocation("privatemsg");
        cfo.reloadCore(el, "/handlers/DirectMsg.ashx?", { since_id: 0, inbox: true }, null, { title: '我收到的私信' }, function() { cfo.setDmorNoramlMsg(true, false); dojo.byId("_dy_DirectMsg").innerHTML = "私信"; });
        cfo.getFriend();
        if (cfo.homeTimer) clearTimeout(cfo.homeTimer);
        if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
        dojo.byId("isAppendTimeLine").value = false;
        return false;
    },
    reloadPrivateMsgByNav: function(el, isInbox, location) {
        dojo.query("._forhome").style("display", "none")
        cfo.updateLocation(location);
        dojo.query(".smenu .cc").removeClass("now");
        dojo.addClass(el, "now");
        cfo.reloadCore(el, "/handlers/DirectMsg.ashx?", { since_id: 0, inbox: isInbox }, 'dm', { title: el.innerHTML }, function() { cfo.setDmorNoramlMsg(true, !isInbox); if (isInbox) dojo.byId("_dy_DirectMsg").innerHTML = "私信"; });
        if (cfo.homeTimer) clearTimeout(cfo.homeTimer);
        if (cfo.searchTimer) clearTimeout(cfo.searchTimer);
        dojo.addClass(dojo.byId("_dy_DirectMsg").parentNode, "current");
        return false;
    },
    replayDm: function(el, nickname, mid, domainName) {
        dojo.byId("friendselect").value = nickname;
        dojo.byId("reciverid").value = domainName;
        dojo.byId("replyId").value = mid;
        window.scrollTo(0, 0);
        dojo.byId("updateTextarea").focus();
    },
    setDmorNoramlMsg: function(isDm, isAppendTimeLine) {
        dojo.query(".dmmsg").style("display", !isDm ? "none" : "");
        dojo.query(".nmmsg").style("display", isDm ? "none" : "");
        if (isDm) {
            dojo.byId("replyId").value = "";
            dojo.style("newcall", "display", "none")
        } else {
            dojo.byId("reciverid").value = "";
            dojo.byId("replyId").value = "";
            dojo.byId("friendselect").value = "输入昵称查找...";
        }
        dojo.byId("isAppendTimeLine").value = isAppendTimeLine;
    },
    updateLocation: function(A) {
        document.location.hash = A.replace(/^https?:\/\/.+?\//, "").replace(/#/gi, "%23").replace(/\s/gi, "+")
    },
    reloadCore: function(el, url, postData, s_current, title, callBack) {
        //更改样式
        dojo.query(".my_channel li").removeClass("current");
        dojo.query(".s_current").removeClass("s_current");
        if (s_current && s_current == "search") {
            el.innerHTML = '<img id="elloading" align="middle" border="0" style="margin: 0px 15px 0pt 0pt;" class="fr" src="http://g1.ssimg.cn/ganniu/s/100203/images/progress.gif"/>';
            dojo.addClass("r_search", "s_current");
        } else if (s_current && s_current == "dm") {
            el.innerHTML = '<img id="elloading"  style="margin-top: 5px"  src="http://g1.ssimg.cn/ganniu/s/100203/images/progress.gif"/>';
            dojo.addClass(el.parentNode.parentNode, "s_current");
        } else {
            dojo.addClass(el.parentNode, "current");
            dojo.addClass(el.parentNode, "loading");
        }
        //end
        if (dojo.byId("newcall")) dojo.style('newcall', 'display', 'none');
        if (page && page['cross_domain']) {
            postData['cross_domain'] = "response";
            var a = dojo.io.script.get({
                url: url + Math.random(),
                content: postData,
                checkString: "response",
                load: function() {
                    cfo.reloadCore_success(response, el, s_current, title, callBack);
                    response = undefined;
                    dojo.io.script.remove("dojoIoScript" + a['id']);
                }
            });
            return false;
        }
        dojo.xhrPost({
            url: url + Math.random(),
            sync: false,
            handleAs: "json",
            content: postData,
            load: function(response, event) {
                cfo.reloadCore_success(response, el, s_current, title, callBack);
            }
        });
        return false;
    },
    reloadCore_success: function(response, el, s_current, title, callBack) {
        if (response) {
            if (response.since_id) dojo.byId("since_id").value = response.since_id;
            if (response.max_id) dojo.byId("max_id").value = response.max_id;
            cfo.cache['updatecount'] = 0;
            cfo.clearTimeLine();
            document.title = document.title.replace(/\(\d+\)\s/, '');
            if (response.timeline != "") dojo.query("#timeline").addContent(response.timeline);
            if (response.page_navigation && response.is_next_page) {
                dojo.style("pageControl", "display", "");
                dojo.style("pageReturn", "display", "");
                dojo.byId("pageControl").innerHTML = response.page_navigation;
            } else {
                dojo.style("pageControl", "display", "none");
                dojo.style("pageReturn", "display", "none");
            }
            cfo.set_nav_title(title);
            if (callBack) callBack();
        }
        //if (cfo.cache["isOpenTimer"] && !cfo.homeTimer) cfo.homeTimer = setTimeout(cfo.getNewMsg, appRefreshTime);
        if (s_current && s_current == "search") {
            el.innerHTML = '搜索';
        } else if (s_current && s_current == "dm") {
            el.innerHTML = el.title;
        } else {
            dojo.removeClass(el.parentNode, "loading");
        }
    },
    set_nav_title: function(obj) {
        document.title = obj.title.replace(/<[^>].*?>/g, '') + document.title.substr(document.title.indexOf("-"));
        dojo.byId("nav_text").innerHTML = obj.title;
    },
    clearTimeLine: function() {
        //var loadingicon = dojo.byId("elloading");
        //if (loadingicon) { loadingicon.parentNode.removeChild(loadingicon); }
        dojo.forEach(dojo.query("#timeline .say"), function(t) {
            t.onmouseover = null;
            t.onmouseout = null;
        });
        dojo.query("#timeline").empty();
    },
    jumpRefresh: function() {
        dojo.query("#timeline .saylastRefresh").removeClass("saylastRefresh");
        var buffer = dojo.query("#timeline .saybuffered");
        if (buffer.length) {
            dojo.addClass(buffer[buffer.length - 1], "saylastRefresh");
        }
        buffer.removeClass("saybuffered");
        cfo.cache['updatecount'] = 0;
        document.title = document.title.replace(/\(\d+\)\s/, '');
        dojo.style("newcall", "display", "none");
        cfo.syncTime();
    },
    getDmCountTip: function() {
        if (!UD.state) return;
        dojo.xhrPost({
            url: "/handlers/getDmCount.ashx?" + Math.random(),
            sync: false,
            handleAs: "json",
            load: function(response, event) {
                if (response.state == 0) {
                    var _dy_Mentions = dojo.byId('_dy_Mentions'),
                    _dy_DirectMsg = dojo.byId('_dy_DirectMsg');
                    if (response.mentions > 0) {
                        if (_dy_Mentions) _dy_Mentions.innerHTML = "@提到我的<em>(" + response.mentions + ")</em>";
                    } if (response.dm > 0) {
                        if (_dy_DirectMsg) _dy_DirectMsg.innerHTML = "私信<em>(" + response.dm + ")</em>";
                    }
                }
            }
        });
        if (this.dmTimer) {
            clearTimeout(this.dmTimer);
        } else {
            this.dmTimer = setTimeout(cfo.getDmCountTip, 1000 * 60);
        }
    }
}

var effect = {
    imgshowtime: 175,
    cachezoom: { e: null, imgSmallObj: null, parentId: null, imgObj: null, index: null },
    imgzoom: function(imgUrl, e, objId, orignalUrl) {
        if (effect.cachezoom['index'] != null && effect.cachezoom['index'] != objId) {
            var div = dojo.byId('showDialog');
            if (div) {
                div.onmouseover = null;
                div.onmouseout = null;
                div.parentNode.removeChild(div);
            }
            effect.zoomdispon();
        }
        var messageImgObj = dojo.byId("thumbnailImg_" + objId);

        if (!dojo.byId('showDialog')) {
            var reshowDialog = dojo.create("div", { innerHTML: '<img style="z-index:1000" id="showimg" class="zoomout" /><div id="imgborder" class="zoomout" style="position:relative"></div><a href="' + orignalUrl + '" target="_blank"><img border="0" id="fullscreen" style="position:absolute;display:none;top:2px;left:0px;z-index:99" src="http://g1.ssimg.cn/ganniu/common/piczoom.gif"></a>', id: 'showDialog', title: '单击关闭图片，点击全屏按钮可查看原图' }, "pictrue_" + objId, 'after'); //加载显示图片div
            dojo.style(reshowDialog, { display: 'none', position: 'absolute', left: '0px', top: '0px', zIndex: '1000' }); //overflow: 'hidden',
            dojo.connect(reshowDialog, "onmouseover", effect.showfull);
            dojo.connect(reshowDialog, "onmouseout", effect.hiddenfull);
        }
        //dojo.attr("showimg", "src", imgUrl); //设置大图
        //set cache
        effect.cachezoom['e'] = dojo.fixEvent(e || window.event);
        effect.cachezoom['imgSmallObj'] = messageImgObj;
        effect.cachezoom['parentId'] = "_control_" + objId;
        effect.cachezoom['index'] = objId;
        util.loadimg(messageImgObj.src, function(img) {
            dojo.attr(effect.cachezoom['imgSmallObj'], { width: img.width, height: img.height }); //设置小图width&height
            dojo.style("upimgparent_" + effect.cachezoom['index'], { zIndex: '999', width: img.width + "px", height: img.height + 6 + "px" }); //设置外框div width & height
            if (!dojo.byId('loadicon')) {
                dojo.create("img", { src: 'http://g1.ssimg.cn/ganniu/s/100203/images/progress.gif', className: 'loading', id: 'loadicon' }, effect.cachezoom['imgSmallObj'], 'after'); //加载loading图标
            }
        });
        //load big image
        util.loadimg(imgUrl, effect.zoomcore);
    },
    zoomdispon: function() {
        //disponse
        dojo.style(effect.cachezoom['parentId'], "zIndex", "1")
        for (var item in effect.cachezoom) {
            effect.cachezoom[item] = null;
        }
        var _loadnode = dojo.byId('loadicon'); if (_loadnode) _loadnode.parentNode.removeChild(_loadnode); //删除loading
        document.body.onclick = null;
    },
    zoomcore: function(imgObj) {
        if (imgObj) {
            effect.cachezoom['imgObj'] = imgObj;
        } else {
            imgObj = effect.cachezoom['imgObj'];
        }
        var _d = dijit.getViewport();
        var _cObj = effect.cachezoom['e'];
        var imgSmallObj = effect.cachezoom['imgSmallObj'],
                _top = imgSmallObj.offsetTop + 3,
			    _left = imgSmallObj.offsetLeft + 3,
			    _imgSize = util.getImageSize(imgObj, _d['w'] < 600 ? _d['w'] - 10 : 600, _d['h'] - 10),
                _width = dojo.attr(imgSmallObj, "width"),
			    _height = dojo.attr(imgSmallObj, "height");
        if (dojo.byId("loadicon"))
            dojo.style("loadicon", "display", "none"); //取消loading
        if (!dojo.byId("showDialog"))
            return;
        if (dojo.style('showDialog', 'display') != 'none') {
            dojo.byId("imgborder").style.cssText = '';
            dojo.anim('showDialog', { left: _left, top: _top }, effect.imgshowtime, null, function() {
                var div = dojo.byId('showDialog');
                if (div) {
                    div.parentNode.removeChild(div);
                    div.onmouseover = null;
                    div.onmouseout = null;
                }
            });
            dojo.anim('showimg', { width: _width, height: _height }, effect.imgshowtime);
            //disponse
            setTimeout(function() {
                if (effect.cachezoom['parentId'] == null) return;
                dojo.style(effect.cachezoom['parentId'], "zIndex", "");
                for (var item in effect.cachezoom) {
                    effect.cachezoom[item] = null;
                }
                var _loadnode = dojo.byId('loadicon'); _loadnode.parentNode.removeChild(_loadnode); //删除loading
                document.body.onclick = null;
            }, effect.imgshowtime);
            //dojo.style(imgSmallObj, 'display', '');
        } else {
            dojo.style(effect.cachezoom['parentId'], "zIndex", "999");
            var _dytop = 0, _dyleft = 0;
            //计算y轴
            if (_cObj['clientY'] - _cObj['layerY'] - (_imgSize.h - _height) / 2 < 0) {
                _dytop = 0 - (_cObj['clientY'] - _cObj['layerY']) + 5;
            }
            else if (_cObj['clientY'] - _cObj['layerY'] + parseInt(_imgSize.h) / 2 + parseInt(_height) / 2 + 10 > _d['h']) {
                _dytop = 0 - (parseInt(_imgSize.h) - (_d['h'] - (_cObj['clientY'] - _cObj['layerY']))) - 5;
            }
            else {
                _dytop = _top - (_imgSize.h - _height) / 2;
            }
            //计算x轴
            if (_cObj['clientX'] - _cObj['layerX'] - (_imgSize.w - _width) / 2 < 0) {
                _dyleft = 0 - (_cObj['clientX'] - _cObj['layerX']) + 5;
            }
            else if (_cObj['clientX'] - _cObj['layerX'] + parseInt(_imgSize.w) / 2 + parseInt(_width) / 2 + 10 > _d['w']) {
                _dyleft = 0 - (parseInt(_imgSize.w) - (_d['w'] - (_cObj['clientX'] - _cObj['layerX']))) - 5;
            }
            else {
                _dyleft = _top - (_imgSize.w - _width) / 2;
            }
            dojo.attr("showimg", { src: imgObj.src});
            dojo.style('showimg', { width: _width + 'px', height: _height + 'px' });
            dojo.style('showDialog', { left: _left + 'px', display: '', top: _top + 'px', width: _imgSize.w + 'px', height: _imgSize.h + 'px' });
            dojo.anim(dojo.byId('showDialog'), { left: _dyleft, top: _dytop }, effect.imgshowtime);
            dojo.anim('showimg', { width: _imgSize.w, height: _imgSize.h }, effect.imgshowtime);
            setTimeout(function() {
                dojo.style("imgborder", { border: "5px solid #fff", width: _imgSize.w + 'px', height: _imgSize.h + 'px', left: '-5px', top: 0 - _imgSize.h - 5 + 'px' });
                (function(el) { el.onclick = effect.zoomcore; })(document.body);
            }, effect.imgshowtime);
            //dojo.style(imgSmallObj, 'display', 'none');
        }
    },
    showfull: function() {
        dojo.byId("fullscreen").style.display = "";
    },
    hiddenfull: function() {
        dojo.byId("fullscreen").style.display = "none";
    }
}
var check = {
    isEmpty: function(pamrs) {
        if (dojo.byId(pamrs).value == "") {
            alert(dojo.byId(pamrs).title);
            dojo.byId(pamrs).focus();
            return false;
        }
        return true;
    },
    isEqual: function(parms1, parms2) {
        if (dojo.byId(parms1).value == dojo.byId(parms2).value) return true;
        return false;
    }
}

function checkSubmit(t, _checkOjb) {
    var max = 140;
    var last = "";
    window.setInterval(compute, 50);
    if (dojo.trim(t.value) == 0) return false;
    function compute() {
        if (t.value == last) {
            return true; // 如果没改动则跳过，频繁赋值ie会闪烁
        } else {
            last = t.value;
        }
        var length = t.value.length;
        if (length > max) {
            _checkOjb.innerHTML = "已超出<em id=\"checkNum\">" + (length - max) + "</em>字";
            dojo.attr(_checkOjb, "class", "cRed")
            return true;
        } else {
            _checkOjb.innerHTML = "你还可以输入<em id=\"checkNum\">" + (max - length) + "</em>字";
            dojo.attr(_checkOjb, "class", "")
            return true;
        }
    }
    return true;
}

//股票搜索
function dolorsignBox() {
    this.timer = null;
    this.resultId = null;
    this.resultFrameObj = null;
    this.resultObj = null;
    this.inputObj = null;
    this.lastObjCache = null;
    this.lastInputValue = '';
    this.isInsertToInput = true; //是否自动添加到textarea中
    dolorsignBox.prototype.init = function(_resultId, _resultFrameObj, _inputObj, _isInsertToInput) {
        this.resultId = _resultId;
        this.resultFrameObj = dojo.byId(_resultFrameObj);
        this.resultObj = dojo.byId(_resultId);
        this.inputObj = dojo.byId(_inputObj);
        this.isInsertToInput = _isInsertToInput;
    };
    dolorsignBox.prototype.showResult = function() {
        if (this.inputObj.value == "") {
            dojo.style(this.resultFrameObj, "display", "none"); //显示result div
            this.lastInputValue = "";
            return;
        }
        if (this.lastInputValue != this.inputObj.value && this.inputObj.value != '代码/简称/拼音') {
            var _this = this;
            function dolorsign_success(response) {
                //防止ie内存泄露，事先清除事件绑定再销毁节点
                dojo.forEach(dojo.query("#" + _this.resultId + " li"), function(item) {
                    item.onmouseover = null;
                    item.onmouseout = null;
                    item.onmousedown = null;
                });
                _this.resultObj.innerHTML = "";
                if (response.length > 0) {
                    for (var i = 0; i < response.length; i++) {
                        var returnObj = dojo.create("li", { innerHTML: '<span class="s1">' + response[i].code + '</span><span class="s2">' + response[i].name + '</span><span class="s3">' + response[i].py + '</span>',
                            title: response[i].code.replace(/<\/?.+?>/gi, ''),
                            marktype: response[i].mark,
                            className: '__result_li'
                        }, _this.resultObj);
                        (function(el) {
                            el.onmouseover = function() {
                                if (_this.lastObjCache != null) {
                                    dojo.removeClass(_this.lastObjCache, "now");
                                }
                                _this.lastObjCache = this;
                                //dojo.removeClass(_this.lastObjCache, "now");
                                dojo.addClass(_this.lastObjCache, "now");
                            }
                            el.onmouseout = function() {
                                if (_this.lastObjCache != null) {
                                    dojo.removeClass(_this.lastObjCache, "now");
                                    //dojo.removeClass(this, "now");
                                }
                                _this.lastObjCache = null;
                            },
							el.onmousedown = function() {
							    _this.inputObj.value = el.title;
							    _this.responseResult(el);
							}
                        })(returnObj);
                        ////设置第一个为默认选项
                        if (i == 0) {
                            _this.lastObjCache = returnObj;
                            dojo.attr(returnObj, "className", "now");
                        }
                        //设置最大显示允许个数
                        if (i >= 9) {  break; } 
                    }
                } else {
                    dojo.create("li", { innerHTML: '<span><i>没有符合条件的结果</i></span>', title: '' }, _this.resultObj);
                    _this.lastObjCache = null;
                }
                dojo.style(_this.resultFrameObj, "display", ""); //显示result div
            }
            this.lastInputValue = this.inputObj.value;
            var _url = "/handlers/searchStockCode.ashx?" + Math.random();
            var postData = { code: encodeURIComponent(this.inputObj.value) };
            if (page && page['cross_domain']) {
                postData['cross_domain'] = "response";
                var a = dojo.io.script.get({
                    url: _url,
                    content: postData,
                    checkString: "response",
                    load: function() {
                        dolorsign_success(response);
                        response = undefined;
                        dojo.io.script.remove("dojoIoScript" + a['id']);
                    }
                });
                return;
            }
            dojo.xhrPost({
                url: _url,
                sync: false,
                handleAs: "json",
                content: { code: encodeURIComponent(this.inputObj.value) },
                load: function(response, event) {
                    dolorsign_success(response);
                }
            });
        }
    };
    dolorsignBox.prototype.responseResult = function(val) {
        cfo.notVerifyForm = false;
        if (val && val.title != "") {
            if (this.isInsertToInput) {
                setTimeout(function() {
                    var objIn = dojo.byId("updateTextarea");
                    objIn.value += "$" + val.title + " ";
                    objIn.focus();
                    cfo.fixTextareaCursorPosition(objIn);
                    cfo.notVerifyForm = true;
                }, 100);
            } else
                cfo.notVerifyForm = true;
        } else {
            cfo.notVerifyForm = true;
        }
        this.inputObj.value = val.title; //设置input框值
        if (dojo.byId(val)) dojo.byId("stock_type").value = dojo.attr(val, "marktype");
        dojo.style(this.resultFrameObj, "display", "none");
        var ubb_stock = dojo.byId("ubb_stock");
        if (ubb_stock) {
            dojo.style(ubb_stock, "display", "none"); //隐藏结果div
        }
        this.lastInputValue = "";
        this.clearTimer();
    };
    dolorsignBox.prototype.hiddenResult = function() {
        dojo.style(this.resultFrameObj, "display", "none");
        var ubb_stock = dojo.byId("ubb_stock");
        if (ubb_stock) {
            dojo.style(ubb_stock, "display", "none"); //隐藏结果div
        }
        this.lastInputValue = "";
        this.clearTimer();
    },
    dolorsignBox.prototype.clearTimer = function() {
        if (this.timer) {
            var _this = this;
            clearInterval(_this.timer);
            _this.timer = null;
        }
    },
		dolorsignBox.prototype.listener = function(evt) {
		    if (!this.timer) {
		        var _this = this;
		        _this.timer = setInterval(function() { _this.showResult() }, 100);
		    }
		    var evt = dojo.fixEvent(evt || window.event);
		    var selectObj = null;
		    var __resultId = "#" + this.resultId;
		    function __rm() {
		        var _obj = dojo.query(__resultId + " .now");
		        selectObj = !_obj ? null : _obj[0];
		        if (selectObj) {
		            dojo.removeClass(selectObj, "now");
		        }
		    }
		    switch (evt.keyCode) {
		        case 38: //up
		            __rm();
		            var nextSibling = getPreviousSibling(selectObj);
		            if (!nextSibling) nextSibling = dojo.query(__resultId + " li")[0];
		            dojo.addClass(nextSibling, "now");
		            this.lastObjCache = nextSibling;
		            this.inputObj.value = nextSibling.title; this.lastInputValue = nextSibling.title;
		            break;
		        case 40: //down
		            __rm();
		            var previousSibling = getNextSibling(selectObj);
		            if (!previousSibling) previousSibling = dojo.query(__resultId + " li")[0];
		            dojo.addClass(previousSibling, "now");
		            this.lastObjCache = previousSibling;
		            this.inputObj.value = previousSibling.title; this.lastInputValue = previousSibling.title;
		            break;
		        case 13: //Enter
		            __rm();
		            this.responseResult(selectObj);
		            break;
		        default:
		            break;
		    }
		    return evt.keyCode;
		};
}
var util = {
    getImageSize: function(image, FitWidth, FitHeight) {
        var ImgD = new Image();
        if (image.width > 0 && image.height > 0) {
            if (image.width / image.height >= FitWidth / FitHeight) {
                if (image.width > FitWidth) {
                    ImgD.width = FitWidth;
                    ImgD.height = (image.height * FitWidth) / image.width;
                }
                else {
                    ImgD.width = image.width;
                    ImgD.height = image.height;
                }
            }
            else {
                if (image.height > FitHeight) {
                    ImgD.height = FitHeight;
                    ImgD.width = (image.width * FitHeight) / image.height;
                }
                else {
                    ImgD.width = image.width;
                    ImgD.height = image.height;
                }
            }
        }
        return { w: ImgD.width, h: ImgD.height };
    },
    loadimg: function(src, callback) {
        var img = new Image(); //创建一个Image对象，实现图片的预下载
        img.src = src;
        if (img.complete) { // 如果图片已经存在于浏览器缓存，直接调用回调函数
            callback(img);
            return; // 
        }
        img.onload = function() { //图片下载完毕时异步调用callback函数。
            callback(img);
        }
    },
    subString: function(str, len, hasDot) {
        var newLength = 0;
        var newStr = "";
        var chineseRegex = /[^\x00-\xff]/g;
        var singleChar = "";
        var strLength = str.replace(chineseRegex, "**").length;
        for (var i = 0; i < strLength; i++) {
            singleChar = str.charAt(i).toString();
            if (singleChar.match(chineseRegex) != null) {
                newLength += 2;
            }
            else {
                newLength++;
            }
            if (newLength > len) {
                break;
            }
            newStr += singleChar;
        }
        if (hasDot && strLength > len)
            newStr += "...";
        return newStr;
    },
    /**
    * 时间换算器
    * @param {string | int} time
    */
    timeMeter: function(time) {
        var parsed_date = new Date(time).getTime();
        var current_date = new Date();
        var past_seconds = parseInt((current_date.getTime() - parsed_date) / 1000);
        if (past_seconds < 0) {
            return null;
        } else if (past_seconds < 60) {
            return (past_seconds + 1) + '秒前';
        } else if (past_seconds < 60 * 60) {
            return (parseInt(past_seconds / 60)).toString() + '分钟前';
        } else {
            return null;
        }
    }
}
//临时
function getNextSibling(n) {
    if (n == null) return null;
    var x = n.nextSibling;
    if (x == null || x.nodeType == null) return null;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }
    return x;

}
function getPreviousSibling(n) {
    if (n == null) return null;
    var x = n.previousSibling;
    if (x == null || x.nodeType == null) return null;
    while (x.nodeType != 1) {
        x = x.previousSibling;
    }
    return x;
}
var appBox = {
    lastValue: null,
    lastObjCache: null,
    lastValue: '',
    inputObj: null,
    isFirstRun: false,
    resultObj: null,
    DATA: new Array(),
    DATA_SOURCE: {},
    serchCore: function() {
        var _value = dojo.trim(appBox.inputObj.value).toLowerCase();
        if (appBox.lastValue != _value && _value != "" && _value != "输入昵称查找...") {
            appBox.showResult(_value);
            dojo.byId("reciverid").value = "";
            dojo.byId("replyId").value = "";
        } else {
            //dojo.style(appBox.resultObj, { display: 'none' });
        }
    },
    search: function() {
        setTimeout(function() { appBox.serchCore(); }, 20);
    },
    showResult: function(_value) {
        appBox.lastValue = _value; //保留上一次设置选择的值
        //防止ie内存泄露，事先清除事件绑定再销毁节点
        dojo.forEach(dojo.query("#name_all li"), function(item) {
            item.onmouseover = null;
            item.onmouseout = null;
        });
        appBox.resultObj.innerHTML = "";
        var matchArr = new Array();
        var isShowAll = true;
        if (_value != "") {
            isShowAll = false;
            dojo.forEach(appBox.DATA, function(value) {
                if (_value != "" && value.indexOf(_value) != -1) {
                    matchArr.push(value);
                }
            });
        } else {
            matchArr = appBox.DATA;
        }
        if (matchArr.length > 0) {
            for (var i = 0; i < matchArr.length; i++) {
                var returnObj = dojo.create("li", { innerHTML: matchArr[i],
                    title: matchArr[i],
                    className: '__result_li'
                }, appBox.resultObj);

                (function(el) {
                    el.onmouseover = function() {
                        if (appBox.lastObjCache != null) dojo.removeClass(appBox.lastObjCache, "current"); dojo.addClass(this, "current");
                    }
                    el.onmouseout = function() {
                        if (appBox.lastObjCache != null) dojo.removeClass(appBox.lastObjCache, "current"); dojo.removeClass(this, "current");
                    },
					el.onclick = function() {
					    appBox.responseResult(el);
					}
                })(returnObj);
                if (i == 0) appBox.lastObjCache = returnObj; //设置第一个为默认选项
                if (i > 5) break; //设置最大显示允许个数
                if (!isShowAll) {
                    dojo.style("name_all", "height", "auto");
                } else {
                    dojo.style("name_all", "height", "166px");
                }
            }
            dojo.attr(dojo.query("#name_all li")[0], "className", "current");
        } else if (appBox.DATA == 0) {
            dojo.create("li", { innerHTML: "你还没有相互关注的好友呢" }, appBox.resultObj);
        }
        dojo.style(appBox.resultObj, "display", '');
    },
    responseResult: function(el) {
        dojo.style(appBox.resultObj, "display", "none");
        appBox.inputObj.value = el.title;
        appBox.lastValue = el.title;
        dojo.byId("reciverid").value = appBox.DATA_SOURCE[el.innerHTML];
        setTimeout(function() { dojo.byId("updateTextarea").focus(); cfo.fixTextareaCursorPosition('updateTextarea'); }, 80);
    },
    listener: function(evt) {
        var evt = dojo.fixEvent(evt || window.event);
        var selectObj = null;
        function __rm() {
            var _obj = dojo.query(".name_list .current");
            selectObj = _obj == null || _obj == undefined ? dojo.query(".name_list")[0] : _obj[0];
            if (selectObj != null && selectObj != undefined)
                dojo.removeClass(selectObj, "current");
            else
                dojo.query(".name_list")[0];
            if (selectObj == null || selectObj == undefined) selectObj = dojo.query(".name_list")[0];
        }
        switch (evt.keyCode) {
            case 38: //up
                __rm();
                var nextSibling = getPreviousSibling(selectObj);
                if (nextSibling == null) nextSibling = selectObj;
                dojo.addClass(nextSibling, "current");
                appBox.lastObjCache = nextSibling;
                break;
            case 40: //down
                __rm();
                var previousSibling = getNextSibling(selectObj);
                if (previousSibling == null) previousSibling = selectObj;
                dojo.addClass(previousSibling, "current");
                appBox.lastObjCache = previousSibling;
                break;
            case 13: //Enter
                __rm();
                appBox.responseResult(selectObj);
                break;
            default:
                break;
        }
    },
    init: function() {
        //查找我的通迅录
        if (!appBox.isFirstRun) {
            appBox.inputObj = dojo.byId("friendselect");
            appBox.isFirstRun = true;
            appBox.resultObj = dojo.byId("name_all");
            //setInterval(appBox.search, 50);
            document.body.onclick = function(e) {
                var evt = dojo.fixEvent(e || window.event);
                //alert(evt.srcElement);
                evt = evt.srcElement || evt.target;
                if (evt.className == "__result_li") {
                    appBox.responseResult(evt);
                } else {
                    if (evt.className != "name_all_link")
                        dojo.style(appBox.resultObj, "display", "none");
                }
            }
            var _data = dojo.byId("name_all_hidden").value.split('$');
            for (var i = 0; i < _data.length; i++) {
                if (_data[i] != "") {
                    var r = _data[i].toLowerCase().split(',');
                    appBox.DATA.push(r[0])
                    appBox.DATA_SOURCE[r[0]] = r[1];
                }
            }
            dojo.attr(appBox.inputObj, "autocomplete", "off");
        }
    }
}
dojo.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = dojo.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

function queryToJson(QS) {
    var _json = {};
    if (typeof QS == "object") {
        for (var a in QS) {
            var _hsh = QS[i].split("=");
            _json[_hsh[0]] = _hsh[1];
        }
    } else {
        var _Qlist = QS.split("&");
        for (var i = 0, len = _Qlist.length; i < len; i++) {
            var _hsh = _Qlist[i].split("=");
            _json[_hsh[0]] = _hsh[1];
        }
    }
    return _json;
};
function objectToString(QS) {
    var _array = new Array();
    for (var a in QS) {
        _array.push(a + "=" + QS[a]);
    }
    return _array;
};