//定义语言消息
if (lang == null) {
    var lang = {
        chat_username_slef:"你",
        chat_username_pair:"陌生人",
        chat_username_system:"系统",
        chat_self_connecting_msg:"正在建立连接，正在寻找现在可以和你聊天的朋友，请稍候...",
        chat_self_connected_msg:"您已经和一个陌生朋友连接上，问个好吧！",
        chat_self_connect_timeout_msg:"暂时没有找到可以和您聊天的陌生人，您可以尝试重新连接...",
        chat_self_say_toomany_msg:"您的发言速度过快，坐下来喝杯茶休息会吧...",
        chat_self_say_sending:"发送中...",
        chat_menu_connect:"连接",
        chat_menu_reconnect:"重新连接",
        chat_menu_connecting:"连接中...",
        chat_menu_disconnect:"断开连接",
        chat_menu_newconnect:"开始一个新的聊天会话",
        chat_menu_disconnect_confirm:"您确定要断开连接吗？",
        chat_self_disconnected:"您已成功结束当前会话",
        chat_pair_disconnected:"对方已经断开连接",
        chat_pair_offline:"对方貌似已经离线...请重新连接",
        chat_downlog:"下载当前聊天记录",
        chat_clean:"清空当前聊天记录",
        chat_system_msg:"系统公告：",
        chat_savelog_nomsg:"信息区域暂时没有聊天记录可以保存，找个人聊几句然后再试试：）",
        chat_have_new_msg:"有新消息",
        chat_or:"或",
        chat_distance:"他/她距离你约 #####.## 公里。",
        chat_distance_001:"注意，您的陌生朋友靠你很近，或许就在你身后...",
        chat_distance_0:"雷达刚才惨遭雷雨，有点进水且分不清方向，暂时无法测距！",
        chat_distance_2:"您的陌生朋友或许就在您附近，真是人生何处不相逢啊！",
        chat_distance_10:"您的陌生朋友或许和您是一个地区的，原来世界真不大！",
        chat_distance_100:"您的陌生朋友或许和您是一个地区的，有机会开车去会会他/她吧！",
        chat_distance_1000:"您的陌生朋友有一定的距离，打个飞的过去和他/她喝杯咖啡吧！",
        chat_distance_3000:"您的陌生朋友不是一般的远，有朋自远方来不亦乐乎！",
        chat_distance_else:"天啊，真是网大了什么人都能碰着，太远了！随便聊吧！",
        chat_pair_typeing:"对方正在输入...",
        chat_wap_system_tips:"注意，该用户为手机WAP用户，对方打字速度可能较慢，请体谅对方...（WAP版陌路人可以让你随时随地聊天！http://moluren.com.cn/wap/）"
    };
}


//==============常量区 Begin===================
var TOKEN_PARAMNAME = "_token_id_";//定义请求的host地址
var HOST_URL = "";//定义请求的host地址

//状态
var STATUS_IDLE = "idle";                    //空闲
var STATUS_CONNECT = "connect";//主动连接成功
var STATUS_CONNECTED = "connected";    //被动连接
var STATUS_DISCONNECTED = "disconnected";//被断开
var STATUS_WATING = "waiting";                   //等待连接

//连接等待，提示重新连接毫秒数
var ALLOW_RECONNECT_MSECONDS = 30000;
var HEARTBEAT_DELAY_MSECONDS = 1000;//心跳时间为15s
var STATISTICS_DELAY_MSECONDS = 13000;//统计数据更新的间隔
var LOCATION_REQ_MAXTIMES = 3;
//==============常量区 End===================

//==============全局变量区 Begin===================
//是否已初始化
var chatInited = false;
//是否正在聊天
var connected = false;
//是否在连接中
var connecting = false;
//已经提醒断线？
var alertDisconnect = false;
//窗口是否获得焦点
var windowFocus = false;
//窗口是否获得焦点
var pairOfflineTimes = 0;
//聊天句柄
var tokenId = "";
var conversationHandle;
var heartBeatHandle = 0;
//最后发言毫秒数
var lastSayMSecond = MUtils.getTimeMillis();
//最后一次发送击键的时间
var lastTypingMSecond = 0;

//wap提示
var showWapTips = false;
var isWapPair = false;
//最后提示重新连接的定时句柄
var lastAlertReConnectHandle = 0;
//==============全局变量区 End===================

//====================================
//获得在线统计数据
//====================================
//获得在线统计数据
function getStatistics(repeat) {
    var statisticsUri = "/json/statistics";
    $.getJSON(HOST_URL + statisticsUri, {t:MUtils.getTimeMillis()}, onGetStatistics);

    if (repeat) {
        setTimeout("getStatistics(true);", STATISTICS_DELAY_MSECONDS);
    }
}

//当在线数据抵达时
function onGetStatistics(data) {
    var statusTotalNum = data.s.a;
    var statusTotlaPairNum = data.s.c;
    $("#statusTotalNum").text(statusTotalNum);
    $("#statusTotlaPairNum").text(statusTotlaPairNum);
    //alert("总在线：" + statusTotalNum + "，聊天在线：" + statusTotlaPairNum);
}
//====================================
//获得在线统计数据结束
//====================================

//初始化下载聊天记录的frame
var initDownloadFrame = function () {
    var downloadFrameHtml = "<iframe id=\"downloadLogFrame\" name=\"downloadLogFrame\" width=\"0\" height=\"0\" style=\"display:none;\"></iframe>";
    $("#downloadChatLogForm").before(downloadFrameHtml);
};

//====================================
//初始化聊天
//====================================
function initChat() {
    getStatistics(true);
    initDownloadFrame();
    setChatPageEvent();
    getTokenId();
    initGoogleAd();
}

//google广告
var initGoogleAd = function() {

    if ($(document).width() < 640) {
        return;
    }


    floatAd("googleAd", 100, -40);
    setTimeout("$(\"#googleAd\").fadeIn(\"slow\");", 1000);
    //setTimeout("$(\"#googleAd\").fadeOut(\"slow\");", 60000);
};
//启动系统
function run() {
    if (chatInited) {
        heartBeat();
        connect();
    } else {
        setTimeout("run()", 1000);
    }
}
//====================================
//初始化聊天结束
//====================================

//====================================
//请求距离信息开始
//====================================
function reqDistance() {
    var distanceUri = "/json/distance";
    $.getJSON(HOST_URL + distanceUri, {_token_id_:tokenId,t:MUtils.getTimeMillis()}, onReqDistance);
}

function onReqDistance(data) {
    var distanceMsg = lang.chat_distance_0;

    if (data.distance == 0.01) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_001;
    } else if (data.distance == 0) {
    } else if (data.distance < 2) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_2;
        distanceMsg = "您的陌生朋友或许就在您附近，真是人生何处不相逢啊！";
    } else if (data.distance < 10 && data.distance >= 2) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_10;
    } else if (data.distance < 100 && data.distance >= 10) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_100;
    } else if (data.distance < 1000 && data.distance >= 100) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_1000;
    } else if (data.distance < 3000 && data.distance >= 1000) {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_3000;
    } else {
        distanceMsg = lang.chat_distance.replace("#####.##", data.distance) + lang.chat_distance_else;
    }

    addSystemMessage(distanceMsg);
}
//====================================
//请求地理信息结束
//====================================


//====================================
//绑定聊天事件
//====================================
function setChatPageEvent() {
    //绑定连接按钮事件
    $("#connectButton").click(connectButtonClick);
    //绑定输入区域键盘事件
    $("#messageInput").keypress(function(event) {
        windowFocus = true;
        if (event.keyCode == 13 || ((event.keyCode == event.ctrlKey || event.keyCode == event.altKey) && event.keyCode == 83)) {
            sendMessage();
        }
    });

    //停止消息提示
    $("body").click(function() {
        stopMessageAlert();
    });

    //让输入区域快捷获得焦点
    $("body").keypress(function(event) {
        if (event.keyCode == 13) {
            $("#messageInput").focus();
        }
    });

    $("#messageInput").focus(function() {
        windowFocus = true;
        //previewMessage();
        //停止消息提示
        stopMessageAlert();
    });

    $("#messageInput").keyup(function() {
        //previewMessage();
        sendTyping();
    });

    $("#messageInput").blur(function() {
        windowFocus = false;
        $("#messagePreview").hide();
    });

    $(window).resize(function() {
        $("#messagePreview").hide();
    });

    $("#sendButton").click(sendMessage);

    //增加input效果
    $("#chatContrl input").hover(function() {
        $(this).removeClass("inputNomal");
        $(this).addClass("inputHover");
    }, function() {
        $(this).removeClass("inputHover");
        $(this).addClass("inputNomal");
    });
    $(window).bind("beforeunload", function() {

    });
}
//====================================
//绑定聊天事件结束
//====================================

//====================================
//获得聊天token
//====================================
//获得聊天token
function getTokenId() {
    if (pageTokenId != undefined && pageTokenId != null) {
        tokenId = pageTokenId;
        chatInited = true;
        run();
        return;
    }

    var tokenUri = "/json/token";
    $.getJSON(HOST_URL + tokenUri, {t:MUtils.getTimeMillis()}, onGetTokenId);
    //alert("获得的聊天tokenUri是：" + tokenUri);
}

function onGetTokenId(data) {
    tokenId = data.token;

    if (hasToken()) {
        chatInited = true;
        run();
    } else {
        //获取token失败，1秒后重新获取
        setTimeout("getTokenId()", 1000);
    }
    //alert("获得的聊天token是：" + tokenId);
}
//====================================
//获得聊天结束
//====================================

//判断是否获得token
function hasToken() {
    return tokenId != "";
}


//====================================
//断开连接
//====================================
function disconnect() {
    var disconnectUri = "/json/disconnect";
    $.getJSON(HOST_URL + disconnectUri, {_token_id_:tokenId,t:MUtils.getTimeMillis()}, onDisconnect);
}
//断开连接
function onDisconnect(data) {
    if (data.disconnect) {
        onDisconnectStatus(lang.chat_self_disconnected);

        //更新统计数据
        getStatistics(false);
    }
}
//====================================
//断开连接结束
//====================================

//连接按钮的点击事件
function connectButtonClick() {
    $("#connectButton").attr("disabled", true);
    setTimeout("$(\"#connectButton\").attr(\"disabled\", false);", 3000);

    if (connected) {
        if (confirm(lang.chat_menu_disconnect_confirm)) {
            disconnect();
        }
    } else {
        connect();
    }
}

//====================================
//连接聊天开始
//====================================
function connect() {
    //判断是否获得token
    if (!hasToken()) {
        addSystemMessage("系统正在初始化...");
        return;
    }

    connecting = true;
    showWapTips = false;

    if (lastAlertReConnectHandle != 0) {
        clearTimeout(lastAlertReConnectHandle);
    }
    //10秒后允许重连
    lastAlertReConnectHandle = setTimeout("allowReconnect()", ALLOW_RECONNECT_MSECONDS);
    setTimeout("$(\".connectFailMessage\").fadeOut(\"slow\");", 1);
    setTimeout("$(\".systemMessage\").fadeOut(\"slow\");", 1);
    setTimeout("$(\".disconnectSuccessMessage\").fadeOut(\"slow\");", 1);

    $(".startNewChat").attr("value", lang.chat_menu_connecting).attr("disabled", true);
    $("#connectButton").attr("value", lang.chat_menu_connecting).attr("disabled", true);

    var thisConversationHandle;
    thisConversationHandle = conversationHandle;
    addMessage("<p class=\"connectingMessage\" id=\"connectingMessage" + thisConversationHandle + "\">" + lang.chat_self_connecting_msg + "</p>");
    setTimeout("$(\"#connectingMessage" + thisConversationHandle + "\").fadeOut(\"slow\");", 30000);

    var connectUri = "/json/connect";
    $.getJSON(HOST_URL + connectUri, {_token_id_:tokenId,t:MUtils.getTimeMillis()}, onConnect);
}

function onConnect(data) {
    if (data.connect) {
        connectSuccess();
        //重新获得统计数据
        getStatistics(false);
    }
}
//====================================
//连接聊天结束
//====================================

//====================================
//聊天状态处理相关
//====================================
function connectSuccess() {
    //设置会话句柄
    conversationHandle = MUtils.getTimeMillis();
    connecting = false;
    alertDisconnect = false;

    //请求距离
    reqDistance();

    $("#connectButton").attr("value", lang.chat_menu_disconnect).attr("disabled", false);
    $(".startNewChat").remove();
    $("#messageInput").attr("disabled", false);
    $("#sendButton").attr("disabled", false);
    connected = true;
    setTimeout("clearScreen()", 1);

    var thisConversationHandle = conversationHandle;
    addMessage("<p class=\"connectSuccessMessage\" id=\"connectSuccessMessage" + thisConversationHandle + "\">" + lang.chat_self_connected_msg + "</p>");
    if (isWapPair && !showWapTips) {
        setTimeout("addSystemMessage(lang.chat_wap_system_tips);", 2000);
        showWapTips = true;
    }
    setTimeout("$(\"#connectingMessage" + thisConversationHandle + "\").fadeOut(\"slow\");", 1);
    setTimeout("$(\".connectSuccessMessage\").fadeOut(\"slow\");", 10000);
}

//当用户已经断开时
function onDisconnectStatus(msg) {
    $("#connectButton").attr("value", lang.chat_menu_connect).attr("disabled", false);
    $("#messageInput").attr("disabled", true);
    $("#sendButton").attr("disabled", true);
    connected = false;
    var thisConversationHandle;
    thisConversationHandle = conversationHandle;
    addMessage("<p class=\"disconnectSuccessMessage\" id=\"disconnectSuccessMessage" + thisConversationHandle + "\">" + msg + "。<input class=\"startNewChat\" type=\"button\" value=\"" + lang.chat_menu_newconnect + "\"/ onclick=\"connect();\"></p>");
    addMessage("<p class=\"systemMessage\" id=\"disconnected" + thisConversationHandle + "\"><a href=\"javascript:void(0);\" onclick=\"downloadLog();\" class=\"downloadText\">" + lang.chat_downlog + "</a> " + lang.chat_or + " <a href=\"javascript:void(0);\" onclick=\"cleanChatLog();\"  class=\"cleanText\">" + lang.chat_clean + "</a></p>");
    addMessage("<p>&nbsp;</p>");
    showAd();
}

function allowReconnect() {
    if (connecting) {
        setTimeout("$(\".connectingMessage\").fadeOut(\"slow\");", 1);
        setTimeout("$(\".systemMessage\").fadeOut(\"slow\");", 1);
        setTimeout("$(\".disconnectSuccessMessage\").fadeOut(\"slow\");", 1);
        addMessage("<p class=\"connectFailMessage\">" + lang.chat_self_connect_timeout_msg + "<input class=\"startNewChat\" type=\"button\" value=\"" + lang.chat_menu_reconnect + "\"/ onclick=\"connect();\"></p>");

        connected = false;
        $(".startNewChat").attr("value", lang.chat_menu_reconnect).attr("disabled", false);
        $("#connectButton").attr("value", lang.chat_menu_reconnect).attr("disabled", false);
    }
}

function clearScreen() {
    //清除系统消息
    $(".disconnectSuccessMessage").fadeOut("slow");
    $(".systemMessage").fadeOut("slow");
    $(".connectFailMessage").fadeOut("slow");
    $(".connectingMessage").fadeOut("slow");
}
//====================================
//聊天状态处理相关结束
//====================================

//====================================
//发送消息开始
//====================================
function sendMessage() {
    var selfMessage = $("#messageInput").val();
    if (/^(\s|　)*$/.test(selfMessage)) {
        //addMessage("<p class=\"pairChatMessage\">系统：不能输入空格作为发言内容，您总得说点啥吧？</p>");
        $("#messageInput").val("");
    } else {
        //限制发言速度
        var msgHandle = MUtils.getTimeMillis();
        if (msgHandle - lastSayMSecond < 500) {
            alert(lang.chat_self_say_toomany_msg);
            lastSayMSecond = msgHandle;
            return;
        }
        lastSayMSecond = msgHandle;
        addMessage("<p class=\"selfChatMessage\"><span class=\"slefName\">" + lang.chat_username_slef + "：</span>" + getSmileMessage(MUtils.escapeHtml(selfMessage)) + "<span class=\"messageTime\">(" + MUtils.getTime() + ")</span><span id=\"" + msgHandle + "\" class=\"messageSending\">(" + lang.chat_self_say_sending + ")</span></p>");
        var sayUri = "/json/say";
        $.post(HOST_URL + sayUri, {_token_id_:tokenId,_message_:MUtils.escapeHtml(selfMessage),_h_:msgHandle,t:MUtils.getTimeMillis()}, onSendMessage, "json");

        $("#messageInput").val("");
        hidePreviewMesage();
    }
}

function onSendMessage(data) {
    $("#" + MUtils.escapeHtml(data.say) + "").fadeOut("fast");
}
//====================================
//发送消息结束
//====================================

//增加消息到发送区域
function addMessage(msg) {
    var sHtml = $("#message").html();
    $("#message").html(sHtml + msg);
    document.all.messageWrapper.scrollTop = document.all.messageWrapper.scrollHeight;
}

//====================================
//心跳开始
//====================================
function heartBeat() {
    if (connected || connecting) {
        //连接上才需要
        var heartBeatUri = "/json/hb";
        heartBeatHandle = MUtils.getTimeMillis();
        setTimeout("verifyHeartBeat(" + heartBeatHandle + ");", 20000);   //10秒后验证心跳
        $.getJSON(HOST_URL + heartBeatUri, {_token_id_:tokenId,_h_:heartBeatHandle,_connected_:connected}, onHeartBeat);
    } else {
        setTimeout("heartBeat();", HEARTBEAT_DELAY_MSECONDS);
    }

}

function verifyHeartBeat(handle) {
    if (handle == heartBeatHandle) {
        //证明上次心跳未返回
        heartBeat();
    }
}

function onHeartBeat(data) {
    //收到心跳结果，马上发起下次心跳
    if (data.hb.h == 0 || data.hb.h == heartBeatHandle) {
        if (data.hb.conn) {
            heartBeat();
        } else {
            setTimeout("heartBeat();", HEARTBEAT_DELAY_MSECONDS);
        }
    }

    if (data.hb.msgs.length > 0) {
        //接收到消息
        receiveMessage(data.hb.msgs);
    }

    //对方正在输入
    showPairTyping(data.hb.pt);

    //判断是否是wap用户
    isWapPair = data.hb.p.c == "wap";
    //判断自己的状态
    if (connecting && data.hb.conn) {
        connectSuccess();
    } else if (connected && data.hb.s.s == STATUS_DISCONNECTED) {
        onDisconnectStatus(lang.chat_pair_disconnected);
    } else {
    }

    //判断对方的状态(非连接状态或对方掉线：超时离线)
    if (connected && (!data.hb.conn || data.hb.pol)) {
        disconnect();
        if (!alertDisconnect) {
            addSystemMessage(lang.chat_pair_offline);
            alertDisconnect = true;
        }
    }
}
//====================================
//心跳结束
//====================================

//接收到消息
function receiveMessage(messages) {
    if (!connected) {
        connectSuccess();
    }

    //提示消息
    if (!windowFocus) {
        alertMessageReach();
    }
    $(".typingMessage").fadeOut("slow");

    for (var i = 0; i < messages.length; i++) {
        addMessage("<p class=\"pairChatMessage\"><span class=\"pairChatName\">" + lang.chat_username_pair + "：</span>" + getSmileMessage(MUtils.escapeHtml(messages[i].c)) + "<span class=\"messageTime\">(" + MUtils.getTime() + ")</span></p>");
    }
}

//接收到公告
function addSystemMessage(message) {
    //提示消息
    if (!windowFocus) {
        alertMessageReach();
    }

    addMessage("<p class=\"systemMessage\"><span class=\"systemName\">" + lang.chat_username_system + "：</span>" + MUtils.escapeHtml(message) + "<span class=\"messageTime\">(" + MUtils.getTime() + ")</span></p>");
}

//下载聊天记录
function downloadLog() {
    $("#message").find(".systemMessage").remove();
    $("#message").find(".connectFailMessage").remove();
    $("#message").find(".disconnectSuccessMessage").remove();
    $("#message").find(".connectingMessage").remove();
    var msgs = $("#message").html();

    if (/^(\s|　)*$/.test(msgs)) {
        alert(lang.chat_savelog_nomsg);
        return;
    }

    $("#msgs").val(msgs);
    var downloadUri = "/chat/download/" + tokenId;
    $("#downloadChatLogForm").attr("action", HOST_URL + downloadUri);
    $("#downloadChatLogForm").submit();
}

//清空聊天记录
function cleanChatLog() {
    $("#message").html("");
}

//******************
//******预览消息开始
//******************
var msgSimleies = {":)":"face0.gif",":~":"face1.gif",":B":"face2.gif",":|":"face3.gif","8-)":"face4.gif",":<":"face5.gif",":$":"face6.gif",":X":"face7.gif",":Z":"face8.gif",":'(":"face9.gif",":-|":"face10.gif",":@":"face11.gif",":P":"face12.gif",":D":"face13.gif",":O":"face14.gif",":(":"face15.gif",":+":"face16.gif","--b":"face17.gif",":Q":"face18.gif",":T":"face19.gif",";P":"face20.gif",";-D":"face21.gif",";d":"face22.gif",";o":"face23.gif",":g":"face24.gif","|-)":"face25.gif",":!":"face26.gif",":L":"face27.gif",":v":"face28.gif",":;":"face29.gif",",f":"face30.gif",":-S":"face31.gif",":?":"face32.gif",";x":"face33.gif",";@":"face34.gif",":8":"face35.gif",";!":"face36.gif","@@!":"face37.gif",":xx":"face38.gif",":bye":"face39.gif",":wipe":"face40.gif",":dig":"face41.gif",":handclap":"face42.gif","&-(":"face43.gif","B-)":"face44.gif","v@":"face45.gif","@v":"face46.gif",":-O":"face47.gif",">-|":"face48.gif","P-(":"face49.gif",":'|":"face50.gif","x-)":"face51.gif",":*":"face52.gif","@x":"face53.gif","8*":"face54.gif"};

var smileyPicPath = "/theme/default/images/smiley/";
var smileyImg = "<img class=\"smileyPic\" src=\"@src@\" alt=\"@alt@\">";
var smileyReg = new RegExp(":\\)|:~|:B|:\\||8-\\)|:<|:\\$|:X|:Z|:'\\(|:-\\||:@|:P|:D|:O|:\\(|:\\+|--b|:Q|:T|;P|;-D|;d|;o|:g|\\|-\\)|:!|:L|:v|:;|,f|:-S|:\\?|;x|;@|:8|;!|@@!|:xx|:bye|:wipe|:dig|:handclap|&-\\(|B-\\)|v@|@v|:-O|>-\\||P-\\(|:'\\||x-\\)|:\\*|@x|8\\*", "g");
function previewMessage() {
    var msgInput = $("#messageInput");
    if (msgInput.val().length == 0) {
        $("#messagePreview").hide();
        return;
    }
    var msgValue = MUtils.escapeHtml(msgInput.val());
    if (msgValue.length > 20) {
        msgValue = "..." + msgValue.substring(msgValue.length - 20, msgValue.length);
    }
    var divPreview = $("#messagePreview");

    var emotionText = getSmileMessage(msgValue);
    var previewMsg = "<p class=\"pairChatMessage\"><span class=\"pairChatName\">" + lang.chat_username_pair + "：</span>" + emotionText + "<span class=\"messageTime\">(" + MUtils.getTime() + ")</span></p>";
    $("#messagePreviewBody").html(previewMsg);
    divPreview.css("left", msgInput.position().left);
    divPreview.css("top", msgInput.position().top - 80);
    divPreview.show();
}

function getSmileMessage(msg) {
    return fixSmileyText(msg).replace(smileyReg, smile);
}
function smile(simleText) {
    //alert(simleText);
    return smileyImg.replace("@src@", smileyPicPath + msgSimleies[simleText]).replace("@alt@", simleText);
}

function hidePreviewMesage() {
    $("#messagePreview").hide();
}

function fixSmileyText(msg) {
    return msg.replace(/：/g, ":").replace(/，/g, ",").replace(/；/g, ";").replace(/（/g, "(").replace(/）/g, ")").replace(/？/g, "?").replace(/！/g, "!");
}
//******************
//******预览消息结束
//******************

//******************
//******浮动广告开始
//******************
var floatAd = function (id, _top, _left) {
    var me = id.charAt ? document.getElementById(id) : id, d1 = document.body, d2 = document.documentElement;
    d1.style.height = d2.style.height = '100%';
    me.style.top = _top ? _top + 'px' : 0;
    me.style[(_left > 0 ? 'left' : 'right')] = _left ? Math.abs(_left) + 'px' : 0;
    me.style.position = 'absolute';
    setInterval(function () {
        me.style.top = parseInt(me.style.top) + (Math.max(d1.scrollTop, d2.scrollTop) + _top - parseInt(me.style.top)) * 0.1 + 'px';
    }, 10 + parseInt(Math.random() * 20));
    return arguments.callee;
};
//******************
//******浮动广告结束
//******************

//******************
//******击键提示开始
//******************
var sendTyping = function () {
    var typingUri = "/json/typing";

    //当距离上次发送大于10s时，再次发送
    if (MUtils.getTimeMillis() - lastTypingMSecond > 10000) {
        lastTypingMSecond = MUtils.getTimeMillis();
        $.getJSON(HOST_URL + typingUri, {_token_id_:tokenId,t:MUtils.getTimeMillis()}, onSendTyping);
    }
};

var onSendTyping = function (data) {
    if (data.typing) {
        //do nothing
    }
};

var showPairTyping = function (typing) {
    var typingIcon = "/theme/default/images/typing.gif";
    if (typing) {
        addMessage("<p class=\"typingMessage\"><img src=\"" + typingIcon + "\" alt=\"" + lang.chat_pair_typeing + "\" /> " + lang.chat_pair_typeing + " </p>");
        setTimeout("$(\".typingMessage\").fadeOut(\"slow\");", 5000);
    }
};
//******************
//******击键提示结束
//******************

//ad
var showAd = function() {

}