/**
*@function:显示好友列表
*@author:tiger
*@email:li284362085@163.com
*@copyright:ActiveNet Logics IT Co.,Ltd.
*@date:2009-07-15
**/
var IE=navigator.appName=="Microsoft Internet Explorer";
var Opera=navigator.appName.toLowerCase()=="opera";
var FF=!IE && !Opera;
var basePath=chatPath+"modules/chat.action/";
//通过tagName得到对象
function $nameTag(id,tagName){
	return $(id).getElementsByTagName(tagName);
}

//通过className 得到对象
function $classTag(id,eleClassName){
	var getEleClass = [];//定义一个数组
	var myclass = new RegExp("\\b"+eleClassName+"\\b");//创建一个正则表达式对像
	try{
		var elem = ($("#"+id)[0]).getElementsByTagName("*");//获取文档里所有的元素
		for(var h=0;h<elem.length;h++){
		  var classes = elem[h].className;//获取class对像
		  if (myclass.test(classes)){getEleClass.push(elem[h]);}//正则比较，取到想要的CLASS对像
		}
	}catch(e){alert(e.message);}
	return getEleClass;//返回数组
}

//已打开的窗口
var usersWindow=new Array();
function putUsersWindow(userid){//增加打开的窗口
	for(var i=0;i<usersWindow.length;i++){
	if(usersWindow[i]==userid){return true;}
	}
	usersWindow.push(userid);
}
//删除已打开的窗口
function clearUsersWindow(userid){
	for(var i = 0; i < usersWindow.length; i++){
		if(usersWindow[i]==userid){
	   		var newarr = new Array();	 
	    	if(i > 0 ){
		      	newarr = usersWindow.slice(0, i);
		      	newarr = newarr.concat(usersWindow.slice(i+1)); 
     	 	}else{
       	 		newarr = usersWindow.slice(1);//删除的是第一个元素
      		}  
      		usersWindow=newarr;		
		}
	}
}

//消息队列
var MessagesQueue=new Array();
//增加消息队列
function putMessagesQueue(userid){
	for(var i=0;i<MessagesQueue.length;i++){
	//如果该用户已经加到新消息提示队列中，则不再加
	if(MessagesQueue[i]==userid){return false;}
	}
	MessagesQueue.push(userid);
	return true;
}
//删除消息队列
function clearMessagesQueue(userid){
	for(var i = 0; i < MessagesQueue.length; ++i){
		if(MessagesQueue[i]==userid){
	   		var newarr = new Array();	 
	    	if(i > 0 ){
		      	newarr = MessagesQueue.slice(0, i);
		      	newarr = newarr.concat(MessagesQueue.slice(i+1)); 
     	 	}else{
       	 		newarr = MessagesQueue.slice(1);//删除的是第一个元素
      		}  
      		MessagesQueue=newarr;	
		}
	}
}

//闪动对象方法
function flashTimeout(timeStr,objId){
	try{
		$("#"+objId)[0].style.visibility=($("#"+objId)[0].style.visibility=="hidden" && isShowChatDialog()==true)?"visible":"hidden";
	}catch(e){;}
	eval(timeStr+"="+setTimeout("flashTimeout('"+timeStr+"','"+objId+"')",600));
}
//闪动头像
function flashHeadImg(userid,groupid){
	if(eval('typeof(time_'+userid+groupid+')=="undefined"') 
	|| eval("time_" + userid + groupid + "==null")){
		flashTimeout("time_"+userid+groupid,"headimg_"+groupid+userid);
	}
}

//组名左边闪动头像
function groupImgFlash(groupid,imgsrc){
	//判断空值
	 if(typeof(groupid)=="undefined"
	 || groupid==""){
	 	return;
	 }
	 
	 //清除记时器
	if(eval('typeof  Tipstime_'   +  groupid   +   '!=  "undefined"')){
    	 clearTimeout(eval("Tipstime_"+groupid));
    	 eval("Tipstime_"+groupid+"=null");
     }
	var tipsdiv=$("#Tips_"+groupid);
	if(typeof(imgsrc)=="undefined" || imgsrc=="" || imgsrc==null){
	 	if(typeof(tipsdiv[0])!="undefined" && tipsdiv[0]!=null && tipsdiv.html()!=""){
	 		tipsdiv.html("");
	 	}
	 	return;
	 }
	var imgHTM="<img height='15' width='15' src='"+imgsrc+"' id='TipsImg_"+groupid+"'>";
	tipsdiv.html(imgHTM);
	//闪动
	flashTimeout("Tipstime_"+groupid,"TipsImg_"+groupid);
}

function setGroupImgFlash(chat_user_id,group_id,session_id){
	if(typeof(chat_user_id)!="undefined" && chat_user_id!=null){
		    if(typeof(session_id)=="undefined" 
		    || session_id==""  || session_id==null){
		    	session_id=getSessionId_byChatId(chat_user_id);
		    }
			if($("#headimg_"+group_id+session_id)[0]!="undefined" 
			 && $("#headimg_"+group_id+session_id)[0]!=null){
			 groupImgFlash(group_id,$("#headimg_"+group_id+session_id).attr("src"));//组名左边闪动
		}
	}
}

//更改没有组的用户到 最近联系人组中 Group does not have
function addUser_toLately_byGDNH(user){
	if(typeof user !="object"){return false;}
	var session_id=user.getSessionId();
	var username=user.getUserName();
	var groupsid=getResideGroupByUserId(session_id);
	var chat_user_id=user.getChatUserId();
	if(groupsid.length<1){return;}
	var gnum=0;
	for(var i=0;i<groupsid.length;i++){
		var uli=$("#list_"+groupsid[i]+session_id);//当前用户在不在组列表中	
		if(typeof(uli[0])=="undefined" || uli[0]==null){
			user.deleteResideGroup(groupsid[i]);//如果不在,则删除所在组
			
			var currflashuser=MessagesQueue[MessagesQueue.length-1];
			clearMessagesQueue(chat_user_id);
			if(currflashuser==chat_user_id){
			if(MessagesQueue.length>0){
				var tempuserid=MessagesQueue[MessagesQueue.length-1];//取到下一个要闪动的用户
			}
			groupImgFlash(groupsid[i],"");
			//轮到下一个在组左边闪动
			if(typeof(tempuserid)!="undefined" && tempuserid!=null){
				setGroupImgFlash(tempuserid,groupsid[i]);
			}}
			
			continue;//终止当前循环
		}gnum++;
	}
	//如果当前用户没有加入到组中,则默认加入到最近联系人组中
	if(gnum==0){
		curr_OperGroup="latelycon";
		setUserToGroupList(session_id,username);
	}
}

//新消息提示
function newmessageNotify(userid,mess){
	if(typeof(userid)=="undefined" 
		|| userid=="" || userid==null){return;}
		var user=getUserInfo_byChatId(userid);
		if(user==null || user.getChatUserId()==null 
	 	 	|| user.getChatUserId()=="undefined" 
	  		|| typeof(user.getChatUserId())=="undefined"){
	  		  getUserInfoByChatUId(userid);//到后台取用户信息
	  		  curr_OperGroup="latelycon";
			return;
		}else{
			//如果用户,不在组列表中,则加到 最近联系人组中
			addUser_toLately_byGDNH(user);
		}
	playAudio("Audio/msg.wav");//声音提醒
	
	for(var i=0;i<usersWindow.length;i++){
		if(usersWindow[i]==userid){return ;}//如果该用户已打开窗口,则不提示闪动
	}
	if(putMessagesQueue(userid)==false){return;}//把通知信息加入到队列中,如果加入失败则不执行下面语句
	var session_id=user.getSessionId();
	var username=user.getUserName();
	var groupsid=getResideGroupByUserId(session_id);
	for(var i=0;i<groupsid.length;i++){
		if($("#headimg_"+groupsid[i]+session_id)[0]!="undefined" 
		 	&& $("#headimg_"+groupsid[i]+session_id)[0]!=null){
		   	 flashHeadImg(session_id,groupsid[i]);//头像闪动
		   	 groupImgFlash(groupsid[i],$("#headimg_"+groupsid[i]+session_id).attr("src"));//组名左边闪动
		 }
	}
	/**************************************替换表情图片*********************************************/
	mess = mess.replace(/(src=\"?)templates/ig,"$1"+chatPath+"templates"); //加相对路径
	var imgstar=/\[img\]/g;//图片标签转换
	var imgend=/\[\/img\]/g;//图片标签转换
	mess=mess.replace(imgstar,"<img src='"+chatPath+"templates/images/face/");
	mess=mess.replace(imgend,"' />");
	/***********************************************************************************************/
	setMessageEntity(userid,mess);//保存消息
	$.messager.anim('fade', 2000);
	$.messager.show(L_NEWMSG, "<font style=color:blue>"+username+"</font> "+L_USERSENDNEWMSG+"<br/>("+mess+")");
}

/****************打开聊天窗口***************************/
function openChatWindow(session_id,flag,basePath){
	var user=getUserInfo(session_id);
	if(typeof user !="object" || user==null){ 
		alert(L_USERINFO_IMPERFECT+"！"); return;
	}
	var chat_user_id=user.getChatUserId();
	var retval=putUsersWindow(chat_user_id);//标识已打开该用户的窗口
	if(retval==true){alert(L_CHATWINALREADYOPEN+"！"); return; }
	
	var windowName="";
	if(typeof(basePath)=="undefined"){
		//basePath=$("base").attr("href");
		basePath=chatPath;
	}
	window.open(basePath+"ChatWindow.php?f_ChatUserId="+chat_user_id+"&flag="+flag,windowName
	,"width=348px,height=347px,top=200px,left=300px,menubar=0,toobar=0,scrollBars=0,resizable=0,status=0,location=0");
   
     clearMessagesQueue(chat_user_id);//清除，新消息提示
     if(MessagesQueue.length>0){
	  	var tempuserid=MessagesQueue[MessagesQueue.length-1];//取到下一个要闪动的用户
	 }
	 
   /** 清除闪动 start ***/
   var groupsid=user.getResideGroup();
     for(var i in groupsid){
		if($("#headimg_"+groupsid[i]+session_id)[0]!="undefined" 
		 && $("#headimg_"+groupsid[i]+session_id)[0]!=null){
		 	    groupImgFlash(groupsid[i],"");//清除组名左边闪动
				$("#message").hide();//清除右下角提示
				if(eval('typeof  time_'   +   session_id+groupsid[i]   +   '!=  "undefined"')){
					clearTimeout(eval("time_"+session_id+groupsid[i]));
					eval("time_"+session_id+groupsid[i]+"=null");
					$("#headimg_"+groupsid[i]+session_id)[0].style.visibility="visible";
				}
		  } 
		
		//轮到下一个在组左边闪动
		 if(typeof(tempuserid)!="undefined" && tempuserid!=null){
			  setGroupImgFlash(tempuserid,groupsid[i]);
		 }
	}
	//轮到下一个提示
	if(typeof(tempuserid)!="undefined" && tempuserid!=null){  
	 var user=getUserInfo_byChatId(tempuserid);
	 if(typeof(user)!="undefined" && user!=null){
	 	 var username=user.getUserName();
	 	 var mess=getMessageEntity(tempuserid);
	 	if(mess!=null){ 
		 $.messager.anim('fade', 2000);
 		 $.messager.show(L_NEWMSG, "<font style=color:blue>"+username+"</font> "+L_USERSENDNEWMSG+"<br/>("+mess+")");
	 	}
	  }
	}
	/************************************end**************************************************/
}

//打开或关闭组
function openORcloseGroup(obj){
var tds=obj.getElementsByTagName("TD");
   if(tds!=null && tds[1]!=null){
   	  if(tds[1].style.display=="none"){
   	  	tds[1].style.display="";
   	  }else{
   	  	tds[1].style.display="none";
   	  }
   }
}

//消息模式窗口数组
var messagePatternChatWindows=new Array();
//增加消息模式窗口
function putMessagePatternChatWindows(winName){
	for(var i=0;i<messagePatternChatWindows.length;i++){
	//如果该记录存在，则不在再记录
	if(messagePatternChatWindows[i]==winName){return true;}
	}
	messagePatternChatWindows.push(winName);
}
//判断是否是消息模式的窗口
function isMPCW(winName){
	for(var i=0;i<messagePatternChatWindows.length;i++){
	if(messagePatternChatWindows[i]==winName){return true;}
	}
	return false;
}
//删除消息模式窗口
function clearMessagePatternChatWindows(winName){
	for(var i = 0; i < messagePatternChatWindows.length; ++i){
		if(messagePatternChatWindows[i]==winName){
	   		var newarr = new Array();	 
	    	if(i > 0 ){
		      	newarr = messagePatternChatWindows.slice(0, i);
		      	newarr = newarr.concat(messagePatternChatWindows.slice(i+1)); 
     	 	}else{
       	 		newarr = messagePatternChatWindows.slice(1);//删除的是第一个元素
      		}  
      		messagePatternChatWindows=newarr;	
		}
	}
}

//播放声音
function playAudio(fileName){
}