/**
*@function:用户个人信息类
*@author:
*@email:
*@copyright:
*@date:2008-12-21
**/
function userInfo(chat_user_id,user_id,session_id,user_name,user_realname){
	var CHAT_USER_ID=chat_user_id;
	var USER_ID=user_id;
	var SESSION_ID=session_id;
	var USER_NAME=user_name;
	var USER_REALNAME=user_realname;
	
	this.getChatUserId = function() {
	             return CHAT_USER_ID;
	}
	
	this.setChatUserId = function(chat_user_id) {
	       CHAT_USER_ID = chat_user_id;
	}
	
	this.getUserId = function() {
	             return USER_ID;
	}
	
	this.setUserId = function(user_id) {
	       USER_ID = user_id;
	}
	
	this.getSessionId = function() {
	             return SESSION_ID;
	}
	
	this.setSessionId = function(session_id) {
	       SESSION_ID = session_id;
	}
	
	this.getUserName = function() {
	             return USER_NAME;
	}
	
	this.setUserName = function(user_name) {
	       USER_NAME = user_name;
	}
	
	this.getUserNickname = function() {
	             return USER_NICKNAME;
	}
	
	this.setUserRealName = function(user_realname) {
	       USER_REALNAME = user_realname;
	}
	
	//标明属于哪个组的
	var reside_groups=new Array();
	this.setResideGroup=function(groupid){
		 for(var i in reside_groups) {
		   if(reside_groups[i] == groupid) {
		     return false;
		   }
		 }
		reside_groups.push(groupid);
		return true; 
	}
	this.getResideGroup=function(){
		return reside_groups;
	}
	//改变它所在的组
	this.changeResideGroup=function(groupid,oldgroupid){
		for(var i in reside_groups) {
		  if(reside_groups[i] == oldgroupid) {
		   reside_groups[i]=groupid;
		      return true;
		  }
		}
		return false;
	}
	//删除所在组
	this.deleteResideGroup=function(groupid){
		var reval=false;
		for(var i = 0; i < reside_groups.length;i++){
			if(reside_groups[i]==groupid){ reval=true;
				var newarr = new Array();
				if(i > 0){
					newarr = reside_groups.slice(0, i);
					newarr = newarr.concat(reside_groups.slice(i+1)); 
				}else{
					newarr = reside_groups.slice(1);
				}
			reside_groups=newarr;		
			}
		}return reval;
	}
}

var users=new Map();
//存入userinfo 对像
function setUserInfo(session_id,userinfo){
	users.put(session_id,userinfo);
}

//删除用户
function delUserInfo(session_id){
	users.remove(session_id);
}
//得到userinfo 对像
function getUserInfo(session_id){
 	return users.get(session_id);
}

//通过sessionid 得到聊天室用户id
function getChatUserId_bySessionId(session_id){
	if(typeof(session_id)=="undefined" || session_id==""){
		return 0;
	}
	var user=users.get(session_id);
	if(typeof(user)!="undefined" && user!=null){
		return user.getChatUserId();
	}
	return 0;
}

//得到session_id通过聊天用户id
function getSessionId_byChatId(chat_user_id){
	if(typeof(chat_user_id)=="undefined" || chat_user_id==null || chat_user_id==""){
		return null;
	}
	for(var i=0;i<users.size();i++){
		tempuser=users.nodes[i].value;
		if(tempuser.getChatUserId()==chat_user_id){
			return tempuser.getSessionId();
		}
	}
	return null;
}

//得到用户通过聊天用户id
function getUserInfo_byChatId(chat_user_id){
	if(typeof(chat_user_id)=="undefined" || chat_user_id==null || chat_user_id==""){
		return null;
	}
	for(var i=0;i<users.size();i++){
		tempuser=users.nodes[i].value;
		if(tempuser.getChatUserId()==chat_user_id){
			return tempuser;
		}
	}
	return null;
}

//用户从组中删除
function delUserInfoFormGroup(session_id,groupid){
	var user=getUserInfo(session_id);
	if(user!=null && typeof(user)!='undefined'){
		var groupsid=user.getResideGroup();
		if(groupsid.length>1){
			/*如果该用户所在的是多个组，那么删除所在的组，不然删除它。*/
			return user.deleteResideGroup(groupid);
		}
	}
	delUserInfo(session_id);return false;
}

//设置用户的状态 1在线，２离开，３隐身，４离线
function setUserStatus(userid,status){
	if(typeof(userid)=="undefined" || userid==null || userid=="" 
	|| status==null || status=="" || typeof(status)=="undefined"){
	return false;
	}
	var tempuser=users.get(userid);
	if(typeof(tempuser)!="undefined" && tempuser!=null && tempuser!=""){
		tempuser.setStatus(status);
		users.put(userid,tempuser);
		return true;
	}return false;
}
//得到状态
function getUserStatus(userid){
	if(typeof(userid)=="undefined" || userid==null || userid==""){
		return 0;
	}
	var tempuser=users.get(userid);
	if(typeof(tempuser)!="undefined" && tempuser!=null && tempuser!=""){
		return tempuser.getStatus();
	}
	return 0;
}

//得到昵称
function getUserNicknameByUserId(userid){
	if(typeof(userid)=="undefined" || userid==null || userid==""){
		return null;
	}
	var tempuser=users.get(userid);
	if(typeof(tempuser)!="undefined" && tempuser!=null && tempuser!=""){
		var usernickname = tempuser.getUserRemark();
		if(usernickname==null || usernickname.trim()==""){
			 usernickname = tempuser.getUserNickname();
		}
		if(usernickname==null || usernickname==""){
			 usernickname = tempuser.getUserName();
		}
		return usernickname;
	}
	return null;
}
//设置所属的组
function setResideGroupByUserId(userid,groupid){
	if(typeof(userid)=="undefined" || userid==null || userid==""
	  ||typeof(groupid)=="undefined" || groupid==null || groupid==""){
		return false;
	}
	var tempuser=users.get(userid);
	if(typeof(tempuser)!="undefined" && tempuser!=null && tempuser!=""){
		return tempuser.setResideGroup(groupid);
		return true;
	}return false;
}
//得到所属的组
function getResideGroupByUserId(userid){
	if(typeof(userid)=="undefined" || userid==null || userid==""){
		return null;
	}
	var tempuser=users.get(userid);
	if(typeof(tempuser)!="undefined" && tempuser!=null && tempuser!=""){
		return tempuser.getResideGroup();
	}
	return null;
}
//通过组id得到成员Id
function getUsersIdByGroupId(groupid,myuid){
	var usersid=new Array();
	var tempuser=null;
	for(var i=0;i<users.size();i++){
		tempuser=users.nodes[i].value;
		var groupsid=tempuser.getResideGroup();
		if(tempuser.getUserId()==myuid){continue;}
		for(var j in groupsid){
			if(groupsid[j]==groupid){usersid.push(tempuser.getUserId());break;}
		}
	}
	return usersid;
}
//通过组id得到成员
function getUsersByGroupId(groupid,myuid){
	var usersarr=new Array();
	var tempuser=null;
	for(var i=0;i<users.size();i++){
		tempuser=users.nodes[i].value;
		var groupsid=tempuser.getResideGroup();
		if(tempuser.getUserId()==myuid){continue;}
		for(var j in groupsid){
			if(groupsid[j]==groupid){usersarr.push(tempuser);break;}
		}
	}
	return usersarr;
}
//得到在线的所有用户
function getOnlineUsers(thisuser){
	var onlineUsers=new Array();
	var index=0;
	var tempuser=null;
	for(var i=0;i<users.size();i++){
		 tempuser=users.nodes[i].value;
		 if(tempuser.getUserId()==thisuser){
		 	continue;//在线列表中，不应包括自己
		 }
		 if(tempuser.getStatus()==1 || tempuser.getStatus()==2 
		 || tempuser.getStatus()==3){
		 	onlineUsers[index++]=tempuser.getUserId();
		 }
	}
	return onlineUsers;
}