function msgUserPosition(repMsg) {
	var parv = parse_msg(repMsg), targObj, strPos;
	if ( parv.length < 2 || parv[1] == "" )
		strPos = "不在线";
	else if ( parv[1] == "*" )
		strPos = "等待室";
	else {
		strPos = new Object();
		strPos.channel = getUserPosition(parv[1]);
		strPos.position = get_position(strPos.channel);	
	}
	if ( typeof(targObj = winUserLog[parv[0]]) != "undefined" && IsFunction(targObj.showposition) ) 
		targObj.showposition(strPos);
	delete winUserLog[parv[0]];
}
function msgEndOfWho(repMsg) {
	if (typeof(who_list) == "undefined" ) 
		return;
	else if ( typeof(target_who) == "object" && IsFunction(target_who.msgWhoEnd) ) {
		var parv = parse_msg(repMsg), who_count = Number(parv[4]);
		target_who.msgWhoEnd(who_count,who_list);
	}
	delete target_who;
	delete who_list;
}
function msgChanListReply(repMsg) {
	if ( typeof(channel_List) != "undefined" ) {
		var len=channel_List.length, temp_chan = new channels(repMsg);
		if ( typeof(temp_chan.name) == "string" )
			channel_List[len] = temp_chan;
	}
}
function findChanIdx(chanList, chname) {
	var i, ret = -1;
	for(i=0;i<chanList.length && ret == -1;i++) 
		if ( "#c"+chanList[i].m_cate+chanList[i].s_cate+chanList[i].name == chname ) 
			ret = i;
	return ret;
}
function msgChanListUsersReply(repMsg) {
	if ( typeof(channel_List) == "undefined" || channel_List.length < 1 )
		return;
	var i, chanIdx, parv = trimNsplit(repMsg), userLen;
	if ( typeof(channel_List.curChanIdx) != "number" )
		channel_List.curChanIdx = -1;
	targ_obj = channel_List[channel_List.curChanIdx];
	for(i=0;i<parv.length;i++) {
		if ( parv[i].charAt(0) == "#" ) 
			channel_List.curChanIdx = findChanIdx(channel_List, parv[i]);
		else if ( typeof(targ_obj = channel_List[channel_List.curChanIdx]) == "object" ) {
			targ_obj.user_list[targ_obj.user_list.length] = new new_user(parv[i]);
		}
	}
}
function msgEndOfChanList(repMsg) {
	if ( typeof(channel_List) == "undefined" )
		return;
	else if ( typeof(msgList_target) == "object" && IsFunction(msgList_target.showChannel) ) {
		var parv = parse_msg(repMsg), info = makeSplitArr(parv[4],"/"), i;
		for(i=0;i<channel_List.length;i++) 
			channel_List[i].user_list = channel_List[i].user_list.reverse();
		msgList_target.showChannel(channel_List,info);
	}
	delete msgList_target;
	delete channel_List;
}
function msgInviteUserReply( channel, invited_id, status) {
	var targObj;
	invited_id = id_reverse_convert(invited_id);
	if ( IsAzitName(channel) ) {
		if ( (targObj = azitInviteWin[channel]) && typeof(targObj.output_list[invited_id]) != "undefined" ) 
			targObj.output_list[invited_id] = status;		
	}
	else if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" );
	else if ( IsChatName(channel) && typeof(targObj.invite_obj) == "object" && typeof(targObj.invite_obj.output_list[invited_id]) != "undefined" ) 
		targObj.invite_obj.output_list[invited_id] = status;
	else if ( IsDateName(channel) )
		dateInviteOut(channel, invited_id, status);
	else if ( IsShotName(channel) || IsFunnyName(channel) ) 
		shotInviteOut(targObj, invited_id, status);
}
function dateInviteOut(channel, user_id, status) {
	var dateObj;
	if ( !IsDateName(channel) || !IsObject(dateObj = GetRoomObjbyChannel(channel)) || !IsObject(dateObj.inviteWin[user_id]) || dateObj.inviteWin[user_id].closed  )
		return;
	else if ( user_id == get_user_id() ) 
		status = -3;
	dateObj.inviteWin[user_id].inviteOut(user_id, status);
	if ( status != 1 && dateObj.users < 2 && user_id == dateObj.oppo_id )
		deleteChanObj(channel);
	else
		delete dateObj.inviteWin[user_id];
}
function shotInviteOut(shotObj, user_id, status) {
	if ( typeof(shotObj) != "object" && typeof(shotObj.inviteWin[user_id]) != "object" )
		return;
	else if ( user_id == get_user_id() ) 
		status = -3;
	try {
		shotObj.inviteWin[user_id].inviteOut(status);
	}
	catch (x){
		ErrorDebug(x);
	}
	delete shotObj.inviteWin[user_id];
}
function msgWhoReply(repMsg) {
	if ( typeof(who_list) == "undefined") 
		return;
	var i, n = who_list.length, parv = parse_msg(repMsg);
	for (i=0; i<parv.length;i++) 
		who_list[n++] = new new_user(parv[i]);
}
function msgEndOfNames(channel) {
	var targObj = GetRoomObjbyChannel(channel), targ_frame, tmpCode;
	if ( typeof(targObj) != "object" )
		return;
	if ( typeof(targObj.listq) == "object" ) {
		targObj.listq = targObj.listq.reverse();
		if ( (tmpCode = targObj.listq.length - 1) > 0 && IsObject(tmpCode = targObj.listq[tmpCode]))
			targObj.last_user = tmpCode.user_id;
	}
	if ( IsChatName(channel) ) {
		targObj.joined = true;
		if ( typeof(targObj.user_frame) == "object" ) 
			ex_nicklist_frame(channel);
		if ( typeof(targObj.msg_frame) == "object" )
			ex_msg_Frame(channel)
		if ( typeof(targObj.topic_frame) == "object" )
			ex_topic_frame(channel);
	}
	else if ( IsDateName(channel) ) {
		targObj.joined = true;
		targObj.can_profile = ( targObj.users > 1 );
		if ( IsObject(targ_frame = targObj.main_frame) ) 
			targ_frame.showlist(targObj.listq, targObj.oppo_id);
	}
}
function msgErrJoinChan(channel, code, club_id) {
	var targ_obj = GetRoomObjbyChannel(channel);
	if ( IsChatName(channel) ) {
		if ( typeof(targ_obj) == "object" ) 
			targ_obj = chatWin[channel].main_frame;
		else if ( typeof(targ_obj = Chan_temp_Frame) == "object" ) 
			Chan_temp_Frame = "";
		if ( typeof(targ_obj) == "object" && !targ_obj.closed ) {
			var m_cate = channel.charAt(2), s_cate = channel.charAt(3), chname = channel.substring(4);
			targ_obj.location.replace("/chat/error.asp?m_cate="+m_cate+"&s_cate="+s_cate+"&chname="+encode_url_para(chname)+"&code="+code+( club_id ? "&club_id="+club_id : "" ));
		}
	}
	else if ( typeof(targ_obj) != "object" );
	else if ( IsDateName(channel) && code == "nochan" && typeof(targ_obj.inviteWin[targ_obj.oppo_id]) == "object" && !targ_obj.inviteWin[targ_obj.oppo_id].closed ) 
		targ_obj.inviteWin[targ_obj.oppo_id].inviteOut(targ_obj.oppo_id, -9);
	else if ( IsShotName(channel) ) 
		targ_obj.main_frame.ErrorShot(code);
	else if ( IsAzitName(channel) )
		targ_obj.main_frame.fnErrorJoin(code);
	deleteChanObj(channel);
}
function memoRetDisplay(user_id, code) {
	if ( typeof(memo_ret_msg[user_id]) == "object" ) {
		memo_ret_msg[user_id].memoRetDisplay(code);
		delete memo_ret_msg[user_id];
	}
}
function msgServiceServerDown(){
	var user_id;
	for ( user_id in memo_ret_msg ) 
		memoRetDisplay(user_id, -1);
}
function msgErrNick(err_nick) {
	var channel, msg = "'"+err_nick+"' 是错误的聊天名. <br>数字不能是头一个字母，</br> 只能是英文或中文，名字的长度为英文16字或中文8字.";
	for ( channel in chatWin ) 
		dis_change_msg(channel, msg_type_err, msg);
	for ( channel in dateWin ) 
		dis_change_msg(channel, msg_type_err, msg);
}
function msgFriendListReply(repMsg) {
	if ( typeof(targ_friends) == "undefiend" || typeof(friends_list) == "undefiend" )
		return;
	var n, i, parv = parse_msg(repMsg);
	for ( n = friends_list.length, i = 0; i<parv.length;n++,i++)
		friends_list[n] = new new_user(parv[i]);
}
function msgMusicListReply(repMsg) {
	if ( typeof(targ_music) == "undefiend" || typeof(music_list) == "undefiend" )
		return;
	var n, i, parv = parse_msg(repMsg);
	for ( n = music_list.length, i = 0; i<parv.length;n++,i++)
		music_list[n] = new new_user(parv[i]);
}
function msgForumListEnd(parv1,parv2,parv3) {
	if ( typeof(forum_user_list) != "object" )
		forum_user_list = new Array();	
	if ( typeof(msgForum_target) == "object" && IsFunction(msgForum_target.msgForumListEnd) ) 
		msgForum_target.msgForumListEnd(forum_user_list,parv1,parv2,parv3);
	delete forum_user_list;
	delete msgForum_target;
}
function msgForumCntList(repMsg) {
	if ( !ISObject(objForumCnt) )
		return;
	var parv = parse_msg(repMsg), i, tmpArr;
	for(i=0;i<parv.length;i++) {
		tmpArr = makeSplitArr(parv[i],",");
		if ( tmpArr.length != 2 )
			continue;
		objForumCnt.list[tmpArr[0]] = tmpArr[1];
	}
}
function msgForumCntListEnd() {
	if ( !ISObject(objForumCnt) )
		return;
	objForumCnt.targWin.showForumCnt(objForumCnt.list);
}
function msgEndofFriendList(parv1) {
	if ( typeof(targ_friends) == "object" && typeof(friends_list) == "object" && IsFunction(targ_friends.showFriends) )
		targ_friends.showFriends(parv1,friends_list);
	delete targ_friends;
	delete friends_list;
}
function msgEndofMusicList(repMsg) {
	var parv = parse_msg(repMsg);
	if ( typeof(targ_music) == "object" && typeof(music_list) == "object" && IsFunction(targ_music.showFavorMusic) ) 
		targ_music.showFavorMusic(music_list, parv[4], parv[5]);
	delete targ_music;
	delete music_list;
}
function msgFavorMusicStart(repMsg) {
	var parv = parse_msg(repMsg), startUser, startTime;
	startUser = new new_user(parv[0]);
	startTime = pretty_time(parv[1]);
	openWin("/member/favorMusic/favorMusicJoin.asp?userID="+encode_url_para(startUser.user_id)+"&channel="+encode_url_para(startUser.channel)+"&musicAddr="+encode_url_para(startUser.musicAddr),300,174);
}
function msgEndofInviteUser(channel) {
	var targObj, user_id;
	if ( IsAzitName(channel) ) {
		if ( (targObj = azitInviteWin[channel]) && (--targObj.inviteCnt) <= 0 ) {
			targObj.window.ok_invite(targObj.output_list);
			delete azitInviteWin[channel]
		}
		return;
	}
	else if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" )
		return;
	else if ( IsChatName(channel) && typeof(targObj = targObj.invite_obj) == "object" && (--targObj.inviteCnt) <= 0 ) {
		targObj.window.ok_invite(targObj.output_list);
		delete targObj;
	}
	else if ( IsShotName(channel) || IsFunnyName(channel) ) {
		for ( user_id in targObj.inviteWin ) 
			shotInviteOut(targObj, user_id, 0);
	}
	else if ( IsDateName(channel) ) {
		for ( user_id in targObj.inviteWin ) 
			dateInviteOut(channel, user_id, 0);
	}
}
function msgRplNoticeChan(channel,strNoticeChan) {
	var targObj;
	if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" )
		return;
	targObj.noticechan=strNoticeChan;
}
function msgRplCategoryList(strList) {
	if ( typeof(cate_list) == "object" ) {
		var tmp_list = makeSplitArr(strList,"|"), parv, i;
		for ( i = 0 ; i < tmp_list.length; i++ ) {
			parv = parse_msg(tmp_list[i]);
			if ( parv[0].substring(3,4) != "0")
				cate_list.list[parv[0]] = new init_category_list(parv[1], parv[2], parv[3], parv[4])
		}
	}
}
function msgEndofCategoryList() {
	if ( typeof(cate_list) == "object" ) {
		var targ_win = cate_list.targ_win;
		if ( typeof(targ_win) == "object" && IsFunction(targ_win.update_catelist) )
			targ_win.update_catelist(cate_list.list);
		delete cate_list;
	}
}
function msgNickChange(nick_User, newNick) {
	var user_id = nick_User.user_id, nickmsg = nick_User.nick+"("+user_id+")更改聊天名为 "+newNick+"."
	newNick=( newNick == "聊天名" ? user_id : newNick );
	if (user_id == get_user_id()) 
		User.nick=newNick;
	var arrChanObj = new Array(chatWin, dateWin, azitWin), i, main_frame, channel, targ_obj;
	for(i=0;i<arrChanObj.length;i++) {
		for(channel in arrChanObj[i]) {
			if ( IsAzitName(channel) );
			else if ( (targ_obj = IsChanMember(channel,user_id)) )
				targ_obj.nick = newNick;
			else
				continue;
			try {
				if ( typeof(main_frame = arrChanObj[i][channel][( IsChatName(channel) ? "user_frame" : "main_frame" )]) == "object" && !main_frame.closed )
					main_frame.change_nickname(user_id,newNick);
			}
			catch(x) {
			}
			if ( !IsAzitName(channel) )
				dis_change_msg(channel, msg_type_set, nickmsg);
		}
	}
}
function msgRplKill(user_id, reason) {
	var user_id = id_reverse_convert(user_id), more, more2, parv;
	if ( user_id == get_user_id() ) {
		if ( (more = reason.indexOf("(")) == -1 ) 
			parv = parse_msg(reason.substring(1));
		else if ( (more2 = reason.indexOf(")")) == -1 ) 
			parv = new Array("");
		else
			parv = parse_msg(reason.substring(more,more2));
		msgKill(( parv[0] == "002" ? "因其他PC上进行登录而断开." : "与服务器的连接断开." ));
	}
}
function msgRplCreate(channel) {
	if ( typeof(Chan_temp_Frame) == "object" ) {
		var chname=encode_url_para(channel.substring(4)), maincate=channel.charAt(2), subcate=channel.charAt(3), targ_url = "/Chat/chat.asp?be_create=1&m_catename="+maincate+"&s_catename="+subcate+"&channel="+chname;
		if ( typeof(Chan_temp_Frame.club_id) != "undefined" && typeof(Chan_temp_Frame.code) != "undefined")
			targ_url += "&club_id="+Chan_temp_Frame.club_id+"&code="+Chan_temp_Frame.code;
		Chan_temp_Frame.location.replace(targ_url);
		delete Chan_temp_Frame;
	}
	else 
		msgSend("PART "+channel);
}
function msgRplDate(channel, oppo_id, myUser) {
	var oppoUser = new new_user(oppo_id);
	if ( typeof(oppoUser) != "object" || typeof(waitDateWin[oppoUser.user_id]) != "object" )
		return;
	makeChanObj(channel, waitDateWin[oppoUser.user_id], oppoUser.user_id);
	waitDateWin[oppoUser.user_id] = "";
}
function msgRplAShot(channel) {
	var targObj;
	if ( typeof(aShotWinTempObj) == "object" ) {
		targObj = makeChanObj(channel,aShotWinTempObj);
		aShotWinTempObj = "";
		targObj.main_frame.fnStartShot(channel, get_user_id());
	}
	else 
		msgSend("PART "+channel);
}
function msgRplAShotSet(channel, strUserId, parv) {
	var targObj, i;
	if ( !(targObj = GetRoomObjbyChannel(channel)) || !(targObj = targObj.main_frame) || targObj.closed )
		return;
	targObj.fnAShotSet(strUserId, parv);
}
function msgRplAShotOk(channel, shotCode) {
	var targObj, i;
	if ( !(targObj = GetRoomObjbyChannel(channel)) || !(targObj = targObj.main_frame) || targObj.closed )
		return;
	targObj.fnAShotOk(shotCode);
	deleteChanObj(channel);
}
function msgRplAShotPre(channel, status) {
	var targObj, i;
	if ( !(targObj = GetRoomObjbyChannel(channel)) || !(targObj = targObj.main_frame) || targObj.closed )
		return;
	targObj.fnAShotPre(status);
}
function msgRplShot(channel) {
	var targObj;
	if ( typeof(shotWinTempObj) == "object" ) {
		targObj = makeChanObj(channel,shotWinTempObj);
		shotWinTempObj = "";
	}
	try {
		if ( typeof(targObj.main_frame) == "object" ) {
			targObj.main_frame.initShotRoomInfo(channel);
			return;
		}
	}
	catch (x){
		ErrorDebug(x);
	}
	msgSend("PART "+channel);
}
function msgRplFunny(channel) {
	var targObj;
	if ( typeof(funnyWinTempObj) == "object" ) {
		targObj = makeChanObj(channel,funnyWinTempObj);
		funnyWinTempObj = "";
	}
	try {
		if ( typeof(targObj.main_frame) == "object" ) {
			targObj.main_frame.startCartoon(channel);
			return;
		}
	}
	catch (x){
		ErrorDebug(x);
	}
	msgSend("PART "+channel);
}
function msgRplShotOk(channel, code) {
	if ( typeof(shotWin[channel]) == "object" && typeof(shotWin[channel].main_frame) == "object" ) 
		shotWin[channel].main_frame.shotok(code);
	deleteChanObj(channel);
}
function msgRplFunnyOk(channel, code) {
	if ( typeof(funnyWin[channel]) == "object" && typeof(funnyWin[channel].main_frame) == "object" ) 
		funnyWin[channel].main_frame.funnyok(code);
}
function msgRplShotSet(channel, strInfo) {
	if ( typeof(shotWin[channel]) == "object" && typeof(shotWin[channel].main_frame) == "object" ) 
		shotWin[channel].main_frame.shotSetInfo(strInfo);
	else {
		deleteChanObj(channel);
		msgSend("PART "+channel);
	}
}
function msgRplTopic(topic_user_id, channel, topic) {
	if ( typeof(chatWin[channel]) == "object" ) {
		msgTopic(channel,topic);
		dis_change_msg(channel, msg_type_set, topic_user_id+" 更改房间名为'"+topic+"'.");
	}
}
function msgRplPrivMsg(fromUser, target, msg) {
	var targ_chan = "";
	if ( IsRoomName(target) ) {
		targ_chan = target;
		target = "";
	}
	else {
		var parv = parse_msg(msg);
		if ( parv.length != 2 || !IsRoomName(parv[0]) )
			return;
		targ_chan = parv[0];
		msg = parv[1];
	}
	if ( targ_chan == "" );
	else if ( msg.charAt(0) != "2" )
		m_privmsg(targ_chan, target, fromUser, msg);
	else
		m_profile(targ_chan, fromUser, msg.substring(1));
}
function shotUpdateAvatar(channel) {
	try {
		shotWin[channel].main_frame.updateMyChar(User.user_char);
	}
	catch (x){
		ErrorDebug(x);
	}
}
function chatUpdateAvatar(channel, anUser, flag, lCharInfo) {
	var targObj, userObj, targFrame;
	if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" ||  !(userObj = IsChanMember(channel, anUser.user_id)) )
		return;
	else if ( IsChatName(channel) )
		targFrame = targObj.user_frame;
	else if ( IsDateName(channel) )
		targFrame = targObj.main_frame;
	else
		return;
	if ( lCharInfo ) 
		userObj.user_char2 = lCharInfo;
	else 
		adjustLargeAvata(userObj.user_char2, anUser.user_char2);
	try {
		targFrame.change_avatar(userObj, (flag & RNAME_FACE_CHANGE), userObj.user_char2);
	}
	catch (x){
		ErrorDebug(x);
	}
}
function azitChatUpdateAvatar(channel, anUser, lCharInfo) {
	var targObj, userObj, targFrame;
	if ( !ISObject(targObj = GetRoomObjbyChannel(channel)) || !(targFrame = targObj.msg_frame) || targFrame.closed )
		return;
	try {
		targFrame.fnAvataUpdate(anUser, lCharInfo);
	}
	catch (x){
		ErrorDebug(x);
	}
}
function msgRplRealname(anUser, repMsg) {
	var user_id = anUser.user_id, targ_obj, channel, parv = trimNsplit(repMsg), flag;
	if ( user_id == "" || parv.length != 2 || isNaN(flag = Number(parv[0])) || !(flag & (RNAME_FACE_CHANGE | RNAME_BODY_CHANGE)))
		return;
	else if ( user_id == get_user_id() )
		for ( channel in shotWin ) 
			shotUpdateAvatar(channel);
	parv[1] = ( parv[1] && parv[1] != "*" ? makeSplitArr(number_convert(parv[1]),"|") : false );	
	for ( channel in chatWin ) 
		chatUpdateAvatar(channel, anUser, flag, parv[1]);
	for ( channel in dateWin ) 
		chatUpdateAvatar(channel, anUser, flag, parv[1]);
	for ( channel in azitWin ) 
		azitChatUpdateAvatar(channel, anUser, parv[1]);
}
function msgRplJoin(channel, anUser) {
	var chname=encode_url_para(channel.substring(4)), targObj;
	if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" ) 
		return;
	else if ( IsAzitName(channel) ) 
		targObj.msg_frame.fnJoinUser(anUser);
	else if ( IsShotName(channel) || IsFunnyName(channel) ) {	
		if ( typeof(targObj.main_frame) != "object" ) {
			deleteChanObj(channel);
			msgSend("PART "+channel);
		}
		if ( anUser.user_id != get_user_id() ) 
			targObj.main_frame.joinUser(anUser);
		else if ( IsFunnyName(channel) )
			targObj.main_frame.startCartoon(channel);
	}
	else if ( anUser.user_id != get_user_id() ) 
		join_nick(channel,anUser);
	else if ( IsChatName(channel) ) {
		if ( typeof(targObj.main_frame) != "object" ) {
			deleteChanObj(channel);
			msgSend("PART "+channel);
		}
		var maincate=channel.charAt(2), subcate=channel.charAt(3), targ_url = "/Chat/chat.asp?channel="+chname+"&m_catename="+maincate+"&s_catename="+subcate;
		if ( typeof(targObj.main_frame.club_id) != "undefined" )
			targ_url += "&club_id="+targObj.main_frame.club_id;
		targObj.main_frame.location.replace(targ_url);
	}
	else if ( IsDateName(channel) ) {
		if ( typeof(targObj.inviteWin[targObj.oppo_id]) == "object" && !targObj.inviteWin[targObj.oppo_id].closed )
			targObj.inviteWin[targObj.oppo_id].close();
		var tmpObj = new Object();
		tmpObj["chname"] = chname;
		openHrefWin(3, "/chat/1chat.asp", tmpObj, 340, 459);
		delete targObj.inviteWin[targObj.oppo_id];
	}
	
}
function msgRplPart(channel, anUser) {
	var targObj, log_msg = anUser.nick+"("+anUser.user_id+") ";
	if ( typeof(targObj = GetRoomObjbyChannel(channel)) != "object" );
	else if (anUser.user_id == get_user_id()) 
		deleteChanObj(channel);
	else if ( IsShotName(channel) || IsFunnyName(channel) ) 
		targObj.main_frame.partUser(anUser);
	else if ( IsAzitName(channel) )
		targObj.main_frame.fnPartUser(anUser);
	else
		part_nick(channel, anUser, ( IsChatName(channel) ? anUser.nick+"("+anUser.user_id+")退出." : ""));
}
function msgRplQuit(anUser) {
	var log_msg = anUser.nick+"("+anUser.user_id+")退出登录.";
	var arrChan = new Array(chatWin, dateWin),i, channel;
	for(i=0;i<arrChan.length;i++)
		for(channel in arrChan[i])
			if ( IsChanMember(channel, anUser.user_id) )
				part_nick(channel,anUser, log_msg);
	for(channel in azitWin)
		if ( azitWin[channel] && azitWin[channel].main_frame && !azitWin[channel].closed )
			azitWin[channel].main_frame.fnPartUser(anUser);
}
function msgRplKick(channel, kick_user, kicked_user, code) {
	var anUser = new Object();
	anUser.user_id = kicked_user;
	if ( kicked_user == get_user_id() )
		log_msg = "对不起. "+kick_user+"强制驱逐了您. 无法继续对话.";
	else
		log_msg = kick_user+" 强制驱逐了 "+kicked_user+"。"+(code == "001" ? "" : "" ) + "";
	part_nick(channel, anUser, log_msg);
}
function msgWelcomeReplay(parv) {
	var targObj;
	if ( typeof(targObj = GetRoomObjbyChannel(channel = parv[0])) != "object" )
		return;
	targObj.noticechan=parv[1];
	dis_change_msg(channel, msg_type_welc, targObj.noticechan);
}
function msgMemoMsgSelect(repMsg) {
	var parv = parse_msg(repMsg);
	switch(parv[0]) {
	case "001" :
		if ( chkOpenMsgWin() )
			return;
		var from_user = new new_user(parv[2]), memo = new get_memo(parv[3]);
		var tmpObj = new Object(), targBaseUrl, width, height;
		switch(memo.code) {
		case "001" : // 一般纸条
			tmpObj["sendchar"] 	= from_user.user_char2.toString();
			tmpObj["namecard"] 	= memo.cash;
			width = 300;
			height = 360;
			targBaseUrl = "/Chat/window/memo.asp";
			break;
		case "011" : // 礼物纸条
			tmpObj["mode"] = "receive";
			tmpObj["item_code"] 	= memo.cash;
			width = 302;
			height = 280;
			targBaseUrl = "/Chat/window/gift.asp";
			break;
		case "012" : // 兑换币纸条
			tmpObj["mode"] = "receive";			
			tmpObj["cash"] 	= memo.cash;
			width = 303;
			height = 280;
			targBaseUrl = "/Shop/window/cash_memo.asp";
			break;
		case "020" : // 名片纸条
			tmpObj["mode"] = "receive";
			tmpObj["cash"] 	= memo.cash;
			width = 350;
			height = 429;
			targBaseUrl = "/Member/namecard/recvNameCard.asp";
			break;
		case "090" : // God预告片纸条
			tmpObj["mode"] = "recv";
			tmpObj["sendchar"] 	= "0|"+from_user.user_char2.toString().replace(/,/g,"|");
			width = 300;
			height = 430;
			targBaseUrl = "/StarHome/God/vod/memoGodNews.asp";
			break;
		case "900" : // 管理员纸条
			targBaseUrl = "/chat/window/memo_admin.asp";
			width = 300;
			height = 360;
			break;
		default:
			return;
		}
		tmpObj["sendtime"] 	= pretty_time(parv[1]);
		if ( typeof(from_user) == "object" ) {
			tmpObj["sendnick"] 	= from_user.nick;
			tmpObj["sendid"] 		= from_user.user_id;
		}
		tmpObj["memomsg"] = memo.text;
		openHrefWin(1, targBaseUrl, tmpObj, width, height);
		break;
	case "011" :
		rpl_memo_list(repMsg.substring(4));
		break;
	case "012" :
	case "013" :
		memoCntSet(0, true);
		if ( typeof(memo_list_target) == "object" ) {
			if ( typeof(array_memo_list) == "undefined" )
				array_memo_list = new Array();
			memo_list_target.end_memo_list(array_memo_list);
		}
		delete array_memo_list;
		delete memo_list_target;
		break;
	case "020" :
		if ( parv[1] != "" ) {
			memoCntSet(parv[1], true);
			memo_init_msg = "收到新纸条 "+parv[1]+"个.";
			if ( typeof(memo_image) == "object" ) {
				swap_memo_image("1",memo_init_msg);
				memo_init_msg = "";
			}
		}
		break;
	case "021" :
		memoRetDisplay(id_reverse_convert(parv[1]), 0)
		break;
	case "024" :
		memoRetDisplay(id_reverse_convert(parv[1]), 1)
		break;
	case "041" :
		if ( typeof(memo_image) == "object" ) {
			if ( parv[1] == "" || parv[2] == "" )
				return;
			msg = id_reverse_convert(parv[2]) + "发送了";
			switch(parv[1]) {
			case "001":
				msg += "纸条";
				break;
			case "011":
				msg += "礼物";
				break;
			case "012":
				msg += "购物卷";
				break;
			case "900":
				msg = "公告事项";
				break;
			defalut :
				return;
			}
			msg += ".";
			swap_memo_image("1",msg);
			memoCntSet(1);
		}
		break;
	case "042" :
		memoRetDisplay(id_reverse_convert(parv[1]), 2)
		break;
	}
}
function msgNoticeChanReply(channel, change_user, noticeChan) {
	if ( typeof(chatWin[channel]) == "object" ) {
		chatWin[channel].noticechan = noticeChan;
		dis_change_msg(channel, msg_type_set, change_user.user_id+" 更改加入消息为'"+chatWin[channel].noticechan+"'.", true);
	}
}
function msgNodate(channel, fromUser, deny_msg) {
	var targObj;
	if ( IsDateName(channel) && typeof(targObj = GetRoomObjbyChannel(channel)) == "object" &&  typeof(targObj = targObj.main_frame) == "object" && !targObj.closed ) {
		targObj.close();
		openWin("/chat/window/deny_date.asp?user_id="+encode_url_para(fromUser.user_id)+"&userChar="+fromUser.user_char2+"&deny_msg="+encode_url_para(nToBr(disableTag(deny_msg))), 350, 200);
	}
	deleteChanObj(channel);
}
function msgError(parv) {
	if ( parv[0] == "Closing" ) {
		var code = ( parv[3].charAt(0) == "(" ? parv[3] : parv[4] );
		code = code.substring(1);
		switch(code) {
		case "001":
		case "001)":
			chatFrame.fnReConnecting();
			break;
		case "Invalid":
			msgKill("ID有问题. 请询问help@igame.com.cn");
			break;
		case "002":
		case "002)":
			msgKill("因从其他PC进行登录而断开.");
		case "Killed":
			break;
		case "010":
		case "010)":
			msgKill("真名或其他信息有问题. 请询问help@igame.com.cn");
			break;
		default :
			CmdXDisconnect();
			break;
		}
	}
}
function msgNosuchUser(user_id) {
	for ( channel in dateWin ) {		
		if ( IsObject(dateWin[channel].inviteWin[user_id]) ) {
			dateWin[channel].inviteWin[user_id].inviteOut(user_id, 0);
			if ( dateWin[channel].users < 2 )
				return deleteChanObj(channel);
		}
	}
	if ( IsObject(waitDateWin[user_id]) && !waitDateWin[user_id].closed ) {
		waitDateWin[user_id].inviteOut(user_id, 0);
		delete waitDateWin[user_id];
	}
}

function initAzitShotUserPosition(channel, arrUserInfo) {
	var targObj;
	if ( !ISObject(targObj = GetRoomObjbyChannel(channel)) || !targObj.main_frame )
		return;	
	targObj.main_frame.fnAddShotUserInfo(arrUserInfo[0], makeSplitArr(number_convert(arrUserInfo[1]),"|"), arrUserInfo[2], arrUserInfo[3], arrUserInfo[4],  arrUserInfo[5]);
}

function initAzitRoomSetCode(channel, setCode, bMust) {
	var targObj;
	if ( !ISObject(targObj = GetRoomObjbyChannel(channel)) || !targObj.main_frame )
		return;
	targObj.main_frame.fnChangeSet(setCode, bMust);
}

function msgFriendListCnt(cnt) {
	if ( !ISObject(watchCntWin) )
		return;
	if ( !watchCntWin.closed )
		watchCntWin.fnShowFriendCnt(cnt);
	watchCntWin = false;
		
}
function msgIsOn(msg) {
	if ( !ISObject(msgIsOnWin) )
		return;
	if ( !msgIsOnWin.closed ) {
		msgIsOnWin.fnShowIsOnMsg(makeSplitArr(msg," "));
	}
	msgIsOnWin = false;
}