<!--
function Refresh()
{
//alert( "refresh." );
    var LastKey = document.getElementById( 'MsgDiv' ).lastChild.id;
    var UserKey = document.getElementById( 'senderkey' ).value;
    ajaxSend( "lastkey=" + LastKey + "&userkey=" + UserKey );
}

var isIE = window.ActiveXObject? true: false;

var timer;

function InitCR()
{
//    setTimeout( "GetUserInfo()", 100 );
    GetUserInfo();
}
/*
var wndActive = 1;
window.onblur = function()
{
    wndActive = 0;
}

window.onfocus = function()
{
    wndActive = 1;
}
*/
function ScrollDiv()
{
    objDiv = document.getElementById( 'MsgDiv' );
    objDiv.scrollTop = objDiv.scrollHeight;
}

function GetUserInfo()
{
    var Data = "comein=1";
    ajaxSend( Data );
    SetStatus( "用户亮相" );
}

function QuitCR()
{
    var UserKey = document.getElementById( 'senderkey' ).value;
    var Data = "quit=1&userkey=" + UserKey;
//    window.alert( Data );
    ajaxSend( Data );
}

function SetStatus( stts )
{
    document.getElementById( 'statusbar' ).innerHTML = stts;
}

function ChangeName()
{
    var NewName = document.getElementById( 'sender' ).value;
    var re = new RegExp( "^[0-9a-zA-Z\u4e00-\u9fa5]+$" );
    if( !re.test( NewName ))
    {
        window.alert( "用户名只能使用中文、字母和数字。" );
        return;
    }
    var lowName = NewName.toLowerCase();
    var fbdWords = ["guest","unknown","所有人", "系统", "雷神", "股神", "股魔"];
    for( var i=0; i<fbdWords.length; i++ )
    {
        if( 0 <= lowName.indexOf( fbdWords[i] ))
        {
            window.alert( "禁用字符串：" + fbdWords[i] + "。" );
            return;
        }
    }
    var LastKey = document.getElementById( 'MsgDiv' ).lastChild.id;
    var UserKey = document.getElementById( 'senderkey' ).value;
    var Data = "rename=" + NewName + "&userkey=" + UserKey + "&lastkey=" + LastKey;
//    window.alert( Data );
    ajaxSend( Data );
    SetStatus( "改名" );
}

function taKeyDown( e, ta )
{
    var Key;
    if( window.event ) // IE
    {
        Key = e.keyCode;
    }
    else // Netscape/Firefox/Opera
    {
        Key = e.which;
    }
    if( Key == 13 )
    {
        MsgSend();
        return false;
    }
}

function KickUser()
{
    var RcverKey = document.getElementById( 'recverkey' ).value;
    var UserKey = document.getElementById( 'senderkey' ).value;
    if( !RcverKey || RcverKey == "user_all" )
    {
        window.alert( "开什么玩笑，驱逐所有人？" );
        return;
    }    
    if( RcverKey == UserKey )
    {
        window.alert( "开什么玩笑，驱逐自己？" );
        return;
    }
    var Data = "kick=" + RcverKey + "&userkey=" + UserKey;
    ajaxSend( Data );
    SetStatus( "驱逐用户" );
}

function ReloadUsers()
{
//alert( "ReloadUsers." );
    var LastKey = document.getElementById( 'MsgDiv' ).lastChild.id;
    var UserKey = document.getElementById( 'senderkey' ).value;
    var Data = "reloadusers=all&userkey=" + UserKey;
    ajaxSend( Data );
    SetStatus( "刷新用户列表" );    
}

function setDestUser( uKey )
{
//window.alert( uKey );
    var Rcver = document.getElementById( 'recver' );
    var uRcver = document.getElementById( uKey );
    
    if( !Rcver || !uRcver )
        return;

//    if( uKey != document.getElementById( 'senderkey' ).value )
    {
        document.getElementById( 'recverkey' ).value = uKey;
        Rcver.innerHTML = uRcver.innerHTML;
    }
    document.getElementById( 'MsgText' ).focus();
}

function ApplyCode( Obj )
{
    Obj.innerHTML = Obj.innerHTML.replace( /&lt;/g, "<" ).replace( /&gt;/g, ">" );
    setTimeout( "ScrollDiv()", 1000 );
//alert( Obj.innerHTML );
}

function HideMsg( Obj )
{
    Obj.parentNode.innerHTML = "";
}
//var NewMsg = true;

function ShowChatMsg( type, sender, recver, skey, rkey, text, time, key )
{
    var MsgStr = "";
    
    if( !text )
    {
        return;
    }
//alert( text );
//    text = text.replace( /&lt;/g, "<" )
//    text = text.replace( /&gt;/g, ">" )
    text = text.replace( /&amp;/g, "&" );
    
    if( 0 == type )     //普通消息
    {
        MsgStr = "<div id='{$msgkey}'><table width='98%'><tr><td class='msguser'>{$user}</td>\
                    <td align='center' width='20px' ondblclick='HideMsg( this );' title='双击隐藏本条'>：</td>\
										<td valign='middle' ondblclick='ApplyCode( this );' \
                    style='word-break:break-all' title='双击运行代码'>{$msgtext}</td>\
                    <td align='right' class='msgtime'>{$datetime}</td></tr></table></div>";
                    
        sender = "<span class='msguser' onclick='setDestUser( this.title );' title='" + skey + "'>" + sender + "</span>";

        if( '' != recver )
        {
            recver = "<span class='msguser' onclick='setDestUser( this.title );' title='" + rkey + "'>" + recver + "</span>";
            sender += '<br/>=>' + recver;
        }
        MsgStr = MsgStr.replace( '{$user}', sender ).replace( '{$msgtext}', text )
                .replace( '{$datetime}', time ).replace( '{$msgkey}', key );
    }
    else if( 1 == type )//动作表情
    {
        MsgStr = "<div id='{$msgkey}'><table width='98%'><tr><td class='emote' align='center'>{$emote}</td>\
                <td align='right' class='msgtime'>{$datetime}</td></tr></table></div>";
        sender = "<span class='msguser' onclick='setDestUser( this.title );' title='" + skey + "'>" + sender + "</span>";
        if( recver )
        {
            recver = "<span class='msguser' onclick='setDestUser( this.title );' title='" + rkey + "'>" + recver + "</span>";
        }
        text = text.replace( "[$u1]", sender ).replace( "[$u2]", recver );
        MsgStr = MsgStr.replace( '{$emote}', text ).replace( '{$datetime}', time ).replace( '{$msgkey}', key );
    }
    else if( 2 == type )//系统消息
    {
        var mText = "";
        MsgStr = "<div id='{$msgkey}'><table width='98%'><tr><td class='msguser'>系统消息</td>\
                <td align='center' width='20px'>：</td><td class='sysinfo' align='center'>{$sysinfo}</td>\
                <td align='right' class='msgtime'>{$datetime}</td></tr></table></div>";
        info = text.split( "|" );
        if( info[0] == "rename" )       //用户改名
        {
            var rnUser = document.getElementById( info[3] );
            if( rnUser )
            {
        //    alert( rnUser.innerHTML );
                rnUser.innerHTML = info[2];
            }
            if( document.getElementById( 'recverkey' ).value == info[3] )
            {
                document.getElementById( 'recver' ).innerHTML = info[2];
            }
            mText = "用户 " + info[1] + " 改名为 " + info[2] + " 。";
        }
        else if( info[0] == "userin" )       //用户进入
        {
        //    if( FirstKey == key )
        //    {
        //        NewMsg = true;
        //    }
            if( !document.getElementById( info[2] ))
            {
                var NewUStr = "<div class='user' id='{$userkey}' onclick='setDestUser( this.id )' title='{$usertype}'>{$username}</div>";
                var title = info[3]? "GOOGLE 用户": "未登录用户";
                NewUStr = NewUStr.replace( '{$username}', info[1] ).replace( '{$userkey}', info[2] ).replace( '{$usertype}', title );
                
                document.getElementById( 'userlist' ).innerHTML += NewUStr;
                document.getElementById( info[2] ).onmouseover = function()
                {
                    this.className='user_';
                }
                document.getElementById( info[2] ).onmouseout = function()
                {
                    this.className='user';
                }
            }
            mText = info[1] + " 脚踏七彩祥云，随风飘进聊天室。";
        }
        else if( info[0] == "newroom" )       //新开房
        {
            mText = "新开 " + info[1] + " 号房间。";
        }
        else if( info[0] == "userout" )       //用户离开
        {
            var qUser = document.getElementById( info[2] );
       //     alert( text );
            if( qUser )
            {
                qUser.parentNode.removeChild( qUser );
            }
            if( document.getElementById( 'recverkey' ).value == info[2] )
            {
                setDestUser( 'user_all' );
            }
            mText = info[1] + " 化作一缕青烟，消散在柔和的霞光里。";
        }
        else if( info[0] == "kickuser" )       //用户被驱逐
        {
            var kUser = document.getElementById( info[2] );
            if( kUser )
            {
                if( info[2] == document.getElementById( 'senderkey' ).value )
                {
                    window.alert( "我已被逐出聊天室，无地自容中。。。" );
                    window.location = "http://www.gov.cn/";
                }
                kUser.parentNode.removeChild( kUser );
            }
            if( document.getElementById( 'recverkey' ).value == info[2] )
            {
                setDestUser( 'user_all' );
            }
            mText = info[1] + " 被退出聊天室。";
        }
        else
        {
        //    window.alert( text );
            mText = text;
        }

        MsgStr = MsgStr.replace( '{$sysinfo}', mText ).replace( '{$datetime}', time ).replace( '{$msgkey}', key );
    }
		else	//股魔
		{
				MsgStr = "<div id='{$msgkey}'><table width='98%'><tr><td class='msguser'>股魔</td>\
                <td align='center' width='20px'>：</td><td class='sysinfo' align='center'>{$sysinfo}</td>\
                <td align='right' class='msgtime'>{$datetime}</td></tr></table></div>";
        MsgStr = MsgStr.replace( '{$sysinfo}', text ).replace( '{$datetime}', time ).replace( '{$msgkey}', key );
		}
    document.getElementById( 'MsgDiv' ).innerHTML += MsgStr;
/*    var newMsgDiv = document.getElementById( 'MsgDiv' ).appendChild( document.createElement( 'div' ));
    newMsgDiv.innerHTML = MsgStr;
    newMsgDiv.id = key;
    这样做IE反应不过来。
*/
    if( isIE )
    {
        var mItems = document.getElementById( 'MsgDiv' ).childNodes
        if( mItems.length > 30 )
        {
            mItems[1].parentNode.removeChild( mItems[0] );
    //    alert( "1 deleted." );
        }
        setTimeout( "ScrollDiv()", 500 );
    }
    else
    {
        ScrollDiv();
    }
    
    var setAlert = document.getElementById( 'alertmsg' );
    if( setAlert.checked && type < 2 )
    {
        window.alert( "收到新消息。" );
        document.getElementById( 'MsgText' ).focus();
        setAlert.checked = false;
    //    wndActive = 1;
    }
}

function DealResponse( rStr )
{
    var a1;
    var a0 = rStr.split( "<|>" );  //所有返回内容，消息+命令
//window.alert( rStr );
    for( var i=a0.length; i--; )
    {
        a1 = a0[i].split( "<>" ); //消息或命令
        
        if( a1[0] == "msg" && !document.getElementById( a1[8] ))
        {
            ShowChatMsg( a1[1], a1[2], a1[3], a1[4], a1[5], a1[6], a1[7], a1[8] );
        }
        else if( a1[0] == "cmd" )
        {
            if( a1[1] == "rename" )
            {
                if( !a1[2] )
                {
                    window.alert( '改名失败。' );
                    return;
                }
                selfKey = document.getElementById( 'senderkey' ).value;
                document.getElementById( selfKey ).innerHTML = a1[2];
            }
            else if( a1[1] == "reload" )        //刷新用户列表
            {
                uList = document.getElementById( 'userlist' )
                uList.innerHTML = "";
                for( var i1=2; i1<a1.length && a1[i1]; i1++ )
                {
                    var UserInfo = a1[i1].split( "|" );
                    var uInfoStr = "<div id='" + UserInfo[0] + "' class='user' onclick='setDestUser( this.id )'>" + UserInfo[1] + "</div>";
                    uList.innerHTML += uInfoStr;
                }
                for( var ii=0; ii < uList.childNodes.length; ii++ )
                {
                    uList.childNodes[ii].onmouseover = function()
                    {
                        this.className='user_';
                    }
                    uList.childNodes[ii].onmouseout = function()
                    {
                        this.className='user';
                    }
                }
            }
            else if( a1[1] == "selfinfo" )
            {
//alert( "selfinfo" + a0[i] );
                document.getElementById( 'senderkey' ).value = a1[2];
                document.getElementById( 'sender' ).value = a1[3];
                var LoginDiv = document.getElementById( 'login' );
                if( LoginDiv )
                {
                    if( a1[4] != 'd' )
                    {
                        LoginDiv.innerHTML = "<form action='/chat.asp?login' method='post'>\
                                                <div>用户名：<input name='uname' size='12' maxlength='16'/><br />\
                                                密　码：<input name='pssd' size='12' maxlength='16' type='password'/><br />\
                                                <input type='submit' value='大江用户登录' /><br /></div></form>"

                    }
                    if( a1[4] != 'g' )
                    {
                        LoginDiv.innerHTML += "<div><a href='" + a1[5] + "'>GOOGLE 用户登录</a></div><br />"
                    }
                }
                setDestUser( 'user_all' );                
                setTimeout( "ReloadUsers()", 500 );
            }
            else if( a1[1] == "msgstart" )
            {
                document.getElementById( 'MsgDiv' ).innerHTML += "<div align='center' width='100%' id=" + a1[2] + ">我进入聊天室。</div>";
            }
            else if( a1[1] == "quit" )
            {
                window.location = a1[2] == "1" ? "http://bbs.djdq.org/" : "http://www.gov.cn/";
            }
            else if( a1[1] == "err" )
            {
                SetStatus( a1[2] );
            }
            else if( a1[1] == "kick" )
            {
                if( a1[2] == "kicked" )
                    window.alert( "驱逐成功。" );
                else
                    window.alert( "此功能暂不可用。" );
            }
        }
    }
}

function ajaxSend( Text )
{
    var xmlHttp=null;
//    window.alert( 'starting...' );
    try
    {// Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {// Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    if( !xmlHttp )
    {
        window.alert( "No AJAX support." );
        return 0;
    }
    
    xmlHttp.onreadystatechange = function()
    {
 //       window.alert( "rrrrrrrr:   " + xmlHttp.readyState );
        if( xmlHttp.readyState != 4 )
            return 0;

        timer = setTimeout( "Refresh()", 5000 );
        if( xmlHttp.status != 200 )
        {
            SetStatus( "通信错误：" + xmlHttp.status );
            return 0;
        }
//        window.alert( "rrrrrrrr:   " + xmlHttp.responseText );
        SetStatus( "正常" );
        DealResponse( xmlHttp.responseText );
    };
    
    xmlHttp.open( "POST", "chat.asp", true );
    xmlHttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded;" ); //设置服务器响应请求体参数
    xmlHttp.send( Text );
    clearTimeout( timer );
//    window.alert( 'sent.' + xmlHttp.readyState );
}

var OldText = "";
function MsgSend()
{
    var Data = document.getElementById( 'MsgText' ).value;
    if( '' == Data )
    {
        return 0;
    }
    Data = Data.replace( /\n*$/, "" );
    if( OldText == Data )
    {
        window.alert( "不能重复发送。" );
        return 0;
    }
    OldText = Data;
    
    if( Data.length > 200 )
    {
        window.alert( "输入内容不能超过２００字。" );
        return 0;
    }
    var Sender = document.getElementById( 'senderkey' ).value;
//window.alert( 'sender = ' + sender );
    var Recver = document.getElementById( 'recverkey' ).value;
    if( !Recver || Recver == "user_all" )
        Recver = "";
    var LastKey = document.getElementById( 'MsgDiv' ).lastChild.id;

    Data = Data.replace( /-/g, "--" ).replace( /&/g, "-and" ).replace( /;/g, "-div" ).replace( />/g, "-gt" ).replace( /</g, "-lt" ).replace( /[\+]/g, "-add" );
    Data = "text=" + Data + "&sender=" + Sender + "&recver=" + Recver + "&lastkey=" + LastKey;
//window.alert( Data );
    ajaxSend( Data );
    SetStatus( "发言" );    
    document.getElementById( 'MsgText' ).value = "";
}
//-->