var lastID = "";//声明上次取回的消息的ID
var mGetTime;//设置setTimeout的返回值
// 通过封装getAjax()方法创建XMLHTTPRequest对象
function getAjax()
{
    var ajax=false;
    try{
        ajax = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            ajax = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            ajax = false;
        }
    }
    if(!ajax && typeof XMLHttpRequest!='undefined'){
        ajax = new XMLHttpRequest();
    }
//	alert(ajax);
    return ajax;
}

var getMessReq = getAjax();//获取消息的XMLHTTPRequest对象
var sendMessReq = getAjax();//发送消息的XMLHTTPRequest对象

//发送消息的方法
function sendMess()
{
    //如果消息为空给出提示并返回
	if(document.getElementById("username").value.indexOf("@") <= 0){
        alert("You have to entered an Email Address!");
		document.getElementById("username").select();
        document.getElementById("username").focus();//把焦点设置到username输入框
        return;
    }
	
    if(document.getElementById("mess").value==""){
        alert("You have not entered a message!");
        document.getElementById("mess").focus();//把焦点设置到消息输入框
        return;
    }
	
    //alert("");
    var d = new Date();
    //判断上次发送消息的状态,4:已发送,0:未发送
    if(sendMessReq.readyState==4 || sendMessReq.readyState == 0){
        //发送消息的服务器端地址
        var sendUrl = "send.asp?username="+ escape(document.getElementById("username").value)+"&mess="+escape(document.getElementById("mess").value) +"&d="+d.getTime();
		//alert(sendUrl);
        sendMessReq.open("POST",sendUrl,true);//建立请求连接
        sendMessReq.onreadystatechange = function(){//发送状态改变后调用的方法
            clearTimeout(mGetTime);//停止自动获取消息
            getMess();//获取消息
        }
        sendMessReq.send(null);//发送请求
        document.getElementById("mess").value = "";//设置消息框为空
        document.getElementById("mess").focus();//把焦点设置到消息输入框
    }
}


function getMess()
{
    var d = new Date();
	var re = /@#and#@/g;
    if(getMessReq.readyState==4 || getMessReq.readyState == 0){
        var getUrl = "getmess.asp?lastid="+ lastID + "&d="+d.getTime();//从服务器返回消息的地址
        getMessReq.open("POST",getUrl,true);//建立请求连接
        getMessReq.onreadystatechange = function(){
            if(getMessReq.readyState==4&&getMessReq.status==200){
                var chatEL = document.getElementById("chat");
                var messXML = getMessReq.responseXML;//获得返回后的XML
                var messNodes = messXML.getElementsByTagName("message");
                var messCount = messNodes.length;
                for(var i = 0 ; i < messCount ; i++){
                    var userNode = messNodes[i].getElementsByTagName("user");
                    var textNode = messNodes[i].getElementsByTagName("text");
                    var dateNode = messNodes[i].getElementsByTagName("date");
					var fontstyleNode = messNodes[i].getElementsByTagName("fontstyle");
                    chatEL.innerHTML += '<div class="username"><span style="' + fontstyleNode[0].firstChild.nodeValue + '">[' + userNode[0].firstChild.nodeValue + ']</span> said at <span>' + dateNode[0].firstChild.nodeValue + '</span></div>';
                    chatEL.innerHTML += '<div>' + textNode[0].firstChild.nodeValue.replace(re,'&') + '</div>';
                    lastID = messNodes[i].getAttribute("id");//上次消息的ID
                    chatEL.scrollTop = chatEL.scrollHeight;//滚动到最后一条消息
                }
                mGetTime = setTimeout("getMess()",2000);//每隔两秒从服务返回最新消息
            }
        }
        getMessReq.send(null);
    }
}

function startChat()
{
    getMess();
    document.getElementById("username").focus();//把焦点设置到用户消息输入框
}


