﻿var userId ;
var roomId;
var timespace=0;
var timeold =0;
var CMD="<span class=\"cmd\">系统</span>";
var Socket;
function cr_Parsestr( msg )
{
    var type;
	var	infotext=$("Info");
    if (msg.length>0)
    {
	  	var arrInfo = new Array();
      	arrInfo  = msg.split("{$}");   
        if (arrInfo.length> 0) {
            type = arrInfo[0];
            switch (type){
                case "userlist":
                    var ulArry = new Array();
                    ulArry = arrInfo[1].toString().split("{|}");
					infotext.innerHTML+=""+CMD+"：您的名称为<strong>[" + userId + "]</strong>&nbsp;&nbsp;" +"<br>";
                    if (ulArry .length>1){
                        for(var i=0 ;i<ulArry.length;i++)
                        {
							//document.writeln("cmd:userList userId=" + ulArry[i].toString());
                            //alert("cmd:userList userId=" + ulArry[i].toString());
							infotext.innerHTML+=""+CMD+"：" + ulArry[i].toString()+" 在聊天室中&nbsp;&nbsp;" +"<br>";
                        }
                    }
                    break;
                case "login":
                    var lgiArry = new Array();
                    lgiArry = arrInfo[1].toString().split("{|}");
                    if (lgiArry .length>0){
                        for(var i=0 ;i<lgiArry.length;i++)
                        {
							//document.writeln("cmd:login " + lgiArry[i].toString());
                            //alert("cmd:login " + lgiArry[i].toString()) ;
							infotext.innerHTML+=""+CMD+"：" + lgiArry[i].toString() +" 进入聊天室&nbsp;&nbsp;"+"<br>";
                        }
                    }
                    break;
                case "logoff":
                    var lgoArry = new Array();
                    lgoArry = arrInfo[1].toString().split("{|}");
                    if (lgoArry .length>0){
                        for(var i=0 ;i<lgoArry.length;i++)
                        {
							//document.writeln("cmd:loginoff:" + lgoArry[i].toString());
//                            alert("cmd:loginoff:" + lgoArry[i].toString()) ;
							infotext.innerHTML+=""+CMD+"：" + lgoArry[i].toString()+ " 离开了&nbsp;&nbsp;" +"<br>";
                        }
                    }
                    break;
                case"content":
					arrInfo[2]=arrInfo[2].replace(/</g,"&lt;").replace(/>/g,"&gt;");
					arrInfo[2]=TakeEmotion(arrInfo[2]);
     				//document.writeln("cmd:contect:"+arrInfo[1].toString());
                    //alert("cmd:content:"+arrInfo[1].toString()+"说："+arrInfo[2].toString()+ "时间："+arrInfo[3].toString());
					infotext.innerHTML+=arrInfo[1].toString()+"说："+arrInfo[2].toString()+ "&nbsp;&nbsp;&nbsp;&nbsp;"+"<span class=\"time\">("+arrInfo[3].toString() +")</span><br>";
                    break;
            }
        }
    }
}
function cr_login()
{
    var strSend;
    strSend = "reg{$}" + userId +"{$}" + roomId;
	Socket.SetVariable("data", strSend);
	Socket.send();
}

function cr_loginoff()
{
	Socket.close();
}
function cr_talk(word)
{
	var nowDate = new  Date();
	var nowMili = nowDate.valueOf();	
	var strSend ;
	strSend = "content{$}" + userId +"{$}" + roomId +"{$}"+word;
    word=TakeEmotion(word);
	if (timeOld =0)
	{
		var	infotext=document.getElementById("Info");
		timeold = nowMili;
		infotext.innerHTML+="<span class=\"italk\">你说：" +word +"&nbsp;&nbsp;"+"</span><br>";
		Socket.SetVariable("data",  strSend);
		Socket.send();
	}
	else
	{
		if ((nowMili -timeold )<=timespace)
		{
			var	infotext=document.getElementById("Info");
			infotext.innerHTML+="休息一下把！："+"&nbsp;&nbsp;"+"<br>";
		}
		else
		{
			var	infotext=document.getElementById("Info");
			infotext.innerHTML+="<span class=\"italk\">你说：" +word +"&nbsp;&nbsp;"+"</span><br>";
			Socket.SetVariable("data",  strSend);
			Socket.send();
			timeold = nowMili;
		}
	}
	
	scrolltoBottom();
}
/*-------------------------------------SOCKET-------------------------------*/

function SocketOnInit(){};


function SocketOnData(data)
{
//	document.getElementById("output").value += "\n"+data;
	//if (CheckUser(data))
	//{
		cr_Parsestr(data);
		scrolltoBottom();
	//}
}

function SocketOnConnect(success)
{
	if (success =='true')
	{
		$("btn").disabled=false;
		cr_login();
	}
}


function SocketOnClose()
{
	alert('无服务器连接！');
}

function SocketClose()
{
	Socket.close();
}

function SocketConnect(host,port)
{	//alert(Socket)
	Socket.SetVariable("host", host);
	Socket.SetVariable("port", port);
	Socket.connect();
}

function SocketSend(data)
{
	Socket.SetVariable("data", data+"\r");
	Socket.send();
}

function CheckUser(data)
{
	var type;
	if (data.length>0)
    {
	  	var arrInfo = new Array();
      	arrInfo  = data.split("{$}");  
		 if (arrInfo.length> 0) {
            type = arrInfo[0];
            switch (type){
                case "userlist":
                    var ulArry = new Array();
					var flag=false;
					var x=1;
                    ulArry = arrInfo[1].toString().split("{|}");
                    if (ulArry.length>0){
                        for(var i=0 ;i<ulArry.length;i++)
                        {
							if (ulArry[i].toString()==userId) flag=true;
							x=i+2;
						}
						
					}
					if (flag){
					//alert(flag)
					//userId="游客"+x;
					//cr_login();
					}
					break;
			}
	 }
	}
	return true;
}



function scrolltoBottom()
{
		var	infotext=$("Info");
		var Infoshell=$("InfoShell");
		Infoshell.scrollTop=infotext.offsetHeight;

}


//-----------------------------------Action and Init-------------------------------------------

addEvent(window,"load",CharInit);
addEvent(window,"resize",CharH);
addEvent(window,"unload",LoginOff);
//window.onbeforeunload 与IE中 document.selection.createRange()有关联。故这里不能用。
var CheckloginStatus=true;
function CharInit()
{
	if (CheckloginStatus) {
	  if (LoginStart()){return;}
	};
	
	$("texts").onkeypress=function(e)
	{
		evt=getEvent(e);
		if (evt.keyCode==13) {send()};

	};
	
	Socket=FlashMovie("socket");
	$("Info").innerHTML="进入聊天室...<br/>";
	setTimeout("LoginIn()",3000);
	CharH();
	//LoginIn()
	
}

function CharH()
{
	var LetfShellBarH=$("MClip").offsetHeight;
	var MVClipH=$("MVClip").offsetHeight;
	var ScrollTXTH=$("ScrollTXT").offsetHeight;
	var operatAH=$("operatA").offsetHeight;
	var loginOUTH=$("loginOUT").offsetHeight;
	var tot=LetfShellBarH-MVClipH-ScrollTXTH-loginOUTH-operatAH-4;//-4为border
	if (tot>0)$("InfoShell").style.height=tot+"px"; 
	
}

function ExpandChat(obj)
{
	var _ExpandImg=$("ExpandImg");
	if($("MVClip").style.display!="none"){
		$("MVClip").style.display="none";
		_ExpandImg.src="images/expand_out.gif";
		_ExpandImg.title="收缩";
	}else
	{
		$("MVClip").style.display="block";
		_ExpandImg.src="images/expand_in.gif";
		_ExpandImg.title="扩展";
	}
	CharH();
}

function conn()
{
	//SocketConnect("10.0.26.100",8080);
}

function LoginIn()
{
	//userId = document.getElementById("txtuserName").value;
	userId=GetCookie("chat_username");
	if (userId==null) userId="游客"+GetRnd();
	roomId = $("txtRoomId").value;
	SocketConnect("211.157.101.74",33218);
}
function LoginOff()
{
	cr_loginoff();
}

function send()
{
	var v=$('texts').value;
	if(v.length>0){
		cr_say(v);
		$('texts').value="";
	}
}
function cr_Clear()
{
	$("Info").innerHTML='';
}
function cr_say(word)
{	
	cr_talk(word);
	//window.document.socket.SetVariable("data",  word);
	//window.document.socket.send();
}

function GetRnd()
{
	var k=new Date();
	var s=k.getTime().toString();
	var m=parseInt(Math.random()*100).toString();
	return s.substring(s.length-4,s.length)+m;
}

//-------------------------Action Login --------------



function LoginStart()
{
		$("LoginClip").style.display="none";
		$("ChatClip").style.display="block";
		return false;

	
	var existuser=GetCookie("chat_username");
	if (existuser!=null)
	{
		$("LoginClip").style.display="none";
		$("ChatClip").style.display="block";
		return false;
	}
	else
	{
		$("LoginClip").style.display="block";
		$("ChatClip").style.display="none";
		return true;
	}
}

function AskRemote(url,parm,onSuccessMethod,onFailureMethod)
{
    new Ajax.Request(url,
    {
		method:'post',    
		parameters:parm,
        onSuccess: function(transport){
            var response = transport.responseText || "";
            onSuccessMethod(response);
        },
		onFailure: function(){
             onFailureMethod(); 
        }

    });


}

function LoginUser()
{
	var u=$("usr").value;
	var p=$("pwd").value;
	AskRemote("Check.php",{usr:u,pwd:p},ok,bad);
	$("pwd").value="";
}

function LoginOutUser()
{
	if(!confirm('确定退出么？'))return;
	userId="";
	LoginOff();
	var expdate = new Date();
  	expdate.setTime(expdate.getTime() + -1 * (24 * 60 * 60 * 1000)); 
	SetCookie("chat_username",'',expdate);
	LoginStart();
}

function ok(response)
{
	switch(response.replace(" ",""))
	{
		case "10":
			alert('用户名或密码错误');
			break;
		case "00":
			var expdate = new Date();
  			expdate.setTime(expdate.getTime() + 365 * (24 * 60 * 60 * 1000)); 
			SetCookie("chat_username",$("usr").value,expdate);
			//alert(GetCookie("chat_username"));
			CharInit();
			break;
		case "20":
			alert('无法登陆！');
			break;
	}
}

function bad()
{
	alert('无法登陆！');
}

function GetCookie (name)
{
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

function getCookieVal (offset)
{
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}


function SetCookie (name, value)
{
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
  
}


//-------------------emotion--------------------------

addEvent(window,"load",emotionInit);
var emotionCode=new Array();
var emotionBase=new Array();
function emotionInit()
{
	var _emotion=$("emotion").getElementsByTagName("img");
	for(var i=0;i<_emotion.length;i++)
	{
		_emotion[i].onclick=function()
		{
			AddTxT(this.alt);
		};
		emotionCode.push(_emotion[i].alt);
		emotionBase.push("<img src='"+_emotion[i].src+"' align='absmiddle'/>");
	}
}

function AddTxT(str)
{
    var ubb=$("texts");
    var ubbLength=ubb.value.length;
    ubb.focus();
    if(typeof document.selection !="undefined")
    {
        document.selection.createRange().text=str;  
    }
    else
    {
        ubb.value=ubb.value.substr(0,ubb.selectionStart)+str+ubb.value.substring(ubb.selectionStart,ubbLength);
    }
}

function TakeEmotion(str)
{
	for(var i=0;i<emotionCode.length;i++)
	{	
		var re = new RegExp(emotionCode[i],"g");
		str=str.replace(re,emotionBase[i]);
	}
	return str;
}

