function classUserList(userListId,countId,aUser)
{
	this.userList=userListId;
	this.countUsers=countId;
	this.myNik=aUser;
	this.otkl=new Array('off.png','on.png');
	this.sexImg=new Array('nosex.gif','man.gif','woman.gif');
	this.sost=new Array({sost:'я в чате',img:'online.png'},
						{sost:'я работаю',img:'work.png'},
						{sost:'я в привате',img:'private.png'},
						{sost:'чай-кофе',img:'coffee.png'},
						{sost:'пиво-водка',img:'drink.png'},
						{sost:'прихорашиваюсь',img:'makeup.png'},
						{sost:'я скоро буду',img:'tobe.png'},
						{sost:'меня нет',img:'offline.png'}
					);

	this.getImgAvatar=function(userBlock,aW,aH)
	{
		return "<img border=0 width=\""+aW+"\" height=\""+aH+"\" src=\"/avatars/"+(userBlock.avatar!=""?userBlock.avatar:"noavatar.gif")+"\">";
	}

	this.getImgIgnor=function(userBlock)
	{
		return "<img border=0 src=\"/modules/chat/images/"+this.otkl[userBlock.otkl]+"\" alt=\"&bull;\">";
	}

	this.userText=function(userBlock)
	{
		var st ="<a href=\"#\" class=\"userline\">"+this.getImgAvatar(userBlock,32,32)+" ";
			st+="<img border=0 width=\"9\" height=\"9\" src=\"/modules/chat/images/"+this.sost[userBlock.sost].img+"\" alt=\" \"> ";
			st+=userBlock.user+"</a>";

			st+="<div style=\"display:none\" class=\"userpopup\">";
			st+="<a href=\"/channels/viewuser.html?method=view&id="+userBlock.id+"\" onClick=\"return hs.htmlExpand(this,config2)\" class=\"statuspop\"><img border=0 width=\"18\" height=\"11\" src=\"/modules/chat/images/profil.png\" alt=\" \"> ";
			switch(userBlock.status.toUpperCase()[0])
			{
				case "П":
					st+="<span class=\"user\">"+userBlock.status+"</span>";
				break;
				case "М":
					st+="<span class=\"moder\">"+userBlock.status+"</span>";
				break;
				case "С":
					st+="<span class=\"supermoder\">"+userBlock.status+"</span>";
				break;
				case "А":
					st+="<span class=\"admin\">"+userBlock.status+"</span>";
				break;
				default:
					st+="<span class=\"guest\">"+userBlock.status+"</span>";
			}

			st+="</a>";
			st+="<a href=\"#\" onClick=\"chat.addPrivatUser('"+userBlock.user+"')\"><img border=0 width=\"11\" height=\"11\" src=\"/modules/chat/images/privateb.png\" alt=\" \"> Приват</a><br/>";
			st+="<a href=\"#\" onClick=\"chat.callUser('"+userBlock.user+"')\"><img border=0 width=\"11\" height=\"11\" src=\"/modules/chat/images/notice.png\" alt=\" \"> Вызвать</a><br/>";
			st+="</div>";
		return st;
	}

	this.setUser=function(aId,aUser,aAvatar,aStatus,aSost,aSex)
	{
		if (this.myNik==aUser && aAvatar!="")
		{
			var avatarautror=document.getElementById("avatarautror");
				avatarautror.src='/avatars/'+aAvatar;
		}

		var st,userBlock=this.getUserId(aId);
		if (!userBlock)
		{
			userBlock=document.createElement('div');
			userBlock.className='userblock';
			this.userList.appendChild(userBlock);
		}	

		userBlock.id=aId;
		userBlock.user=aUser;
		userBlock.avatar=aAvatar;
		userBlock.status=aStatus;
		userBlock.sost=aSost;
		userBlock.sex=aSex;
		userBlock.otkl=1;


		userBlock.innerHTML=this.userText(userBlock);

		switch (userBlock.sex.toUpperCase())
		{
			case 'МУЖСКОЙ':
				userBlock.getElementsByTagName('a')[0].style.backgroundImage='url(/modules/chat/images/'+this.sexImg[1]+')';
			break;
			case 'ЖЕНСКИЙ':
				userBlock.getElementsByTagName('a')[0].style.backgroundImage='url(/modules/chat/images/'+this.sexImg[2]+')';
			break;
			default:
				userBlock.getElementsByTagName('a')[0].style.backgroundImage='url(/modules/chat/images/'+this.sexImg[0]+')';
		}


		userBlock.onmouseover=function()
		{
			this.getElementsByTagName('DIV')[0].style.display='block';
		}

		userBlock.onmouseout=function()
		{
			this.getElementsByTagName('DIV')[0].style.display='none';
		}

		userBlock.onclick=function()
		{
			chat.selUser(this.user);
		}
		this.userCount();
	}

	this.userCount=function()
	{
		var j=0;
		for (var i=0;i<this.userList.childNodes.length;i++)
		{
			if (this.userList.childNodes[i].nodeType==1)
			{
				j++;
			}
		}
		this.countUsers.innerHTML=j;
	}

	this.getUser=function(aUser)
	{
		for (var i=0;i<this.userList.childNodes.length;i++)
		{
			if (this.userList.childNodes[i].nodeType==1 && this.userList.childNodes[i].user==aUser)
			{
				return this.userList.childNodes[i];
			}
		}
		return null;
	}

	this.getUserId=function(aId)
	{
		for (var i=0;i<this.userList.childNodes.length;i++)
		{
			if (this.userList.childNodes[i].nodeType==1 && this.userList.childNodes[i].id==aId)
			{
				return this.userList.childNodes[i];
			}
		}
		return null;
	}

	this.selUser=function(aUser)
	{
		if (keyPressed!=17)
		{
			this.unselUsers();
		}
		var userBlock=this.getUser(aUser);
		if (userBlock)
		{
			userBlock.className='userblockactive';
			return true;
		}
		return false;
	}

	this.deleteUser=function(aId)
	{
		var userBlock=this.getUserId(aId);
		if (userBlock)
		{
			this.userList.removeChild(userBlock);
		}
		this.userCount();
	}

	this.unselUsers=function()
	{
		for (var i=0;i<this.userList.childNodes.length;i++)
		{
			if (this.userList.childNodes[i].nodeType==1)
			{
				this.userList.childNodes[i].className='userblock';
			}
		}
	}

	this.setUserSost=function(aId,aSost)
	{
		var userBlock=this.getUserId(aId);
			userBlock.sost=aSost;
			userBlock.innerHTML=this.userText(userBlock);
			
			this.setUser(aId,userBlock.user,userBlock.avatar,userBlock.status,aSost,userBlock.sex)
	}
}

function classChat(aId,aNik,aAdminStatus)
{
	this.maxMessages=200;
	this.started=false;
	this.idUser=aId;
	this.myNik=aNik;
	this.adress1=null;
	this.adress2=null;
	this.sendObjavl=false;
	this.images_path="/modules/chat/images/";

	this.ulTabs=null;
	this.panelw=null;
 
	this.adminStatus=aAdminStatus;

	this.userList=new classUserList(document.getElementById("tablescroll"),document.getElementById("count"),this.myNik);

	this.flashTitleTime=0;
	this.DocumentTitle=null;
	this.originalDocumentTitle=document.title;
	this.animateTitle=new Array('--(@)--','-(-@-)-','(--@--)');
	this.animateFavicon=new Array('anim03.png','anim02.png','anim01.png');
	this.countAnimate=0;

	this.soundOnOff=true;
	this.soundImg=new Array({img:"sound.png",caption:"выключить звук"},{img:'soundoff.png',caption:"включить звук"});
	this.soundonoffdiv=document.getElementById("soundonoff");

	this.timer=0;
	this.refreshTime=5;

	for (var i=0;i<this.userList.sost.length;i++) addOption(document.getElementById("idstat"),this.userList.sost[i].sost,i,false);

	this.arrChannel=new Array();
	this.thisChannel=null;

	this.smilespanel=null;
	this.channelspanel=null;
	this.uploadfile=null;

	this.playSound=function(aId)
	{
		if (this.soundOnOff && this.started)
		{
			soundManager.play(aId);
		}	
	}

	this.set_sound_onoff=function()
	{
		this.soundOnOff=!this.soundOnOff;
		this.set_soundimg();
		editor.textArea.focus();
	}

	this.set_soundimg=function()
	{
		this.soundonoffdiv.innerHTML="<a href=\"javascript:chat.set_sound_onoff()\"><img src=\""+this.images_path+this.soundImg[this.soundOnOff?0:1].img+"\" alt=\""+this.soundImg[this.soundOnOff?0:1].caption+"\" /></a>";

	}

	this.setCaption=function(aId,aCaption)
	{
		var tab=document.getElementById(aId+"_tab");
		if (tab)
		{
			tab.innerHTML="<span>"+aCaption+"&nbsp;<img onclick=\"chat.closeChannel("+aId+");\" src=\"/modules/chat/images/clousetab.png\" style=\"vertical-align:middle;\" alt=\" \" /></span>";
		}	
	}

	this.displayTab=function(aId)
	{
		var panelElm,panelContainerElm,tabElm,tabContainerElm,selectionClass,nodes,i;

		tabElm=document.getElementById(aId+"_tab");
		tabContainerElm=tabElm?tabElm.parentNode:null;

		panelElm=document.getElementById(aId+'_panel');
		panelContainerElm=panelElm?panelElm.parentNode:null;

		if (tabElm && tabContainerElm)
		{
			nodes=tabContainerElm.childNodes;
			for (i=0;i<nodes.length;i++)
			{
				if (nodes[i].nodeName=="LI") nodes[i].className='';
			}
			tabElm.className='current';
		}

		if (panelElm && panelContainerElm)
		{
			nodes=panelContainerElm.childNodes;
			for (i=0;i<nodes.length; i++)
			{
				if (nodes[i].nodeName=="DIV") nodes[i].className='panel';
			}
			panelElm.className='current';
		}
	}

	this.addTab=function(aId,aCaption)
	{
		var tab=document.createElement('li');
			tab.id=aId+"_tab";
			tab.num=aId;
			tab.onclick=function()
			{
				chat.selTab(this.num);
			}
			this.ulTabs.appendChild(tab);

		var panel=document.createElement('div');
			panel.id=aId+"_panel";
			panel.className="panel"
			this.panelw.appendChild(panel);

		this.setCaption(aId,aCaption);
		return panel;
	}
	
	this.selTab=function(aId)
	{
		this.displayTab(aId);
		this.thisChannel=this.findChannel(aId);
		chat.writeUserList(aId);
		this.writeButtons(aId);
		this.panelw.scrollTop=this.panelw.scrollHeight-this.panelw.clientHeight+20;
		editor.textArea.focus();
		if (this.thisChannel.type==2)
		{
			this.setPrivatUser(aId);
		}else{
			this.selAllUsers();
//			this.selUser(this.thisChannel.touser);
		}

	}

	this.delTab=function(aId)
	{
		var tab=document.getElementById(aId+"_tab");
		if (tab)
		{
			this.ulTabs.removeChild(tab);
			var panel=document.getElementById(aId+"_panel");
			if (panel)
			{
				this.panelw.removeChild(panel);
			}
		}
	}
	
	this.up=function(countScroll)
	{
		scr1=this.panelw.scrollTop;
		scr2=this.panelw.clientHeight;
		scr3=this.panelw.scrollHeight;
		if (scr1+scr2==scr3) return;
		if (scr1+scr2+countScroll<scr3) return;
		this.panelw.scrollTop=1+Math.round(scr1+1*(scr3-scr2-scr1)/15);
		setTimeout('chat.up('+countScroll+')',15); 
 	}

	this.timeStr=function(aTime)
	{
		return aTime.substr(8,2)+':'+aTime.substr(10,2)+':'+aTime.substr(12,2);
	}
 
	this.is_send=function()
	{
		timer=0;
		this.sendMessage(100);
		this.hideAllPanels();
		return false;
	}

	this.sendMessage=function(aCommand)
	{
		var msg=editor.textArea.value;
		if (msg!='')
		{
		    var activeChannels='';
			for (var i=0;i<this.arrChannel.length;i++)
			{
				activeChannels=activeChannels+this.arrChannel[i].id+(i<this.arrChannel.length-1?',':'');
			}

			var params= 'msg='+encodeURIComponent(msg)+
						'&command='+(this.sendObjavl?101:100)+
						'&tonick='+encodeURIComponent(this.thisChannel.touser)+
						'&channels='+activeChannels+
						'&channel='+this.thisChannel.id;
			ajax.makeRequest('/channels/send.html?method=post','POST',params,this.runRequest);
			this.DocumentTitle=null;
			editor.textArea.value='';
			if (this.sendObjavl)
			{
				this.selAllUsers();
			}
		}	
		editor.textArea.focus();
	}

	this.refreshChat=function()
	{
		var d,h,m,s,activeChannels='',clock=document.getElementById("clock");
		d =new Date();
		h =d.getHours();
		m =d.getMinutes();
		s =d.getSeconds();
		if (h<10)h="0"+h;
		if (m<10)m="0"+m;
		if (s<10)s="0"+s;
		clock.innerHTML=h+":"+m+":"+s;
		for (var i=0;i<this.arrChannel.length;i++)
		{
			activeChannels=activeChannels+this.arrChannel[i].id+(i<this.arrChannel.length-1?',':'');
		}

		this.timer++;
		if (this.timer>=this.refreshTime)
		{
			this.timer=0;
			ajax.makeRequest('/channels/refresh.html?method=post&channels='+activeChannels,'GET',null,this.runRequest);
		}
	}

	this.userView=function(id)
	{
		windowopen("/channels/viewuser.html?method=view&id="+id,500,400);
	}

	this.channelswin=function()
	{
		windowopen("/channels/viewchannels.html?method=view&channel="+this.thisChannel.id,500,400);
	}
 
	this.addFile=function()
	{
		windowopen("/loadfile.html?method=view",590,480);
	}

	this.runRequest=function(responseText)
	{
//		if (responseText!='') alert(responseText);
		return eval(responseText);
	}

	this.toNick=function(aNick)
	{
		return "<a class=\"bld\" title=\"Адресовать сообщение для "+aNick+"\" href=\"javascript:chat.selUser(\'"+aNick+"\')\">"+aNick+"</a>";
	}

	this.insert_a=function(aId)
	{
		editor.insertAtCaret('[a]#'+aId+'[/a]');
	}
 
	this.insert_q=function(aId)
	{
		var msg_node=document.getElementById("id_"+aId);
		editor.insertAtCaret('[quote]'+msg_node.msg+'[/quote]');
		this.selUser(msg_node.autor);
	}

	this.delete_msg=function(aId)
	{
		if (this.adminStatus>1)
		{
			if (confirm("Удалить сообщение?"))
			{
				ajax.makeRequest('/channels/delmessage.html?method=post&channel='+this.thisChannel.id+'&idmsg='+aId,'GET',null,this.runRequest);
			}
		}
	}

	this.setIgnor=function(aId)
	{
		var row=this.userList.getUserId(aId);
		if (row)
		{
			row.otkl=row.otkl==0?1:0;
			this.userList.setUserRec(row);
		}
	}

	this.deleteChannelUser=function(aChannel,aId)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			for (var i=0;i<channel.users.length;i++)
			{
				if(channel.users[i].id==aId)
				{
					if (aChannel==this.thisChannel.id) this.userList.deleteUser(aId);
					return channel.users.splice(i,1);
				}
			}	
		}
		return null;
	}
	
	this.isUserOnLine=function(aChannel,aUser)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			for (var i=0;i<channel.users.length;i++)
			{
				if(channel.users[i].user==aUser) return true;
			}	
		}
		return false;
	}

	this.findChannel=function(aId)
	{
		for (var i=0;i<this.arrChannel.length;i++)
		{
			if (this.arrChannel[i].id==aId) return this.arrChannel[i];
		}
		return null;
	}

	this.addChannel=function(aId,aType,aCaption)
	{
		var arrSt,st,channel=this.findChannel(aId);
		if (aCaption.indexOf(',')!=-1)
		{
			arrSt=aCaption.split(',');
			st=arrSt[0]==this.myNik?'Приват с '+arrSt[1]:'Приват с '+arrSt[0];
		}else st=aCaption;

		if (channel)
		{
			channel.type=aType;
			this.setCaption(aId,st);
		}else{
			this.arrChannel.push({id:aId,type:aType,caption:aCaption,panel:this.addTab(aId,st),users:[],touser:''});
		}
		if (aType==2)
		{
//			this.setPrivatUser(aId);
		}
		this.selTab(aId);
	}

	this.setPrivatUser=function(aChannel)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			for (var i=0;i<channel.users.length;i++)
			{
				if (channel.users[i].user!=this.myNik)
				{
					this.selUser(channel.users[i].user);
					return;
				}
			}	
		}
	}

	this.deleteMessage=function(aChannel,aId)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			var msg_node=document.getElementById("id_"+aId);
			if (msg_node)
			{
				channel.panel.removeChild(msg_node);
			}
		}	
	}

	this.setChannelUser=function(aChannel,aId,aUser,aAvatar,aStatus,aSost,aRod)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			for (var i=0;i<channel.users.length;i++)
			{
				if(channel.users[i].id==aId)
				{
					if (aChannel==this.thisChannel.id) this.userList.setUser(aId,aUser,aAvatar,aStatus,aSost,aRod);
					channel.users[i]={id:aId,user:aUser,avatar:aAvatar,status:aStatus,sost:aSost,rod:aRod};
					return i;
				}
			}
			if (aChannel==this.thisChannel.id) this.userList.setUser(aId,aUser,aAvatar,aStatus,aSost,aRod);
			return channel.users.push({id:aId,user:aUser,avatar:aAvatar,status:aStatus,sost:aSost,rod:aRod});
		}
	}

	this.writeUserList=function(aChannel)
	{
		var channel=this.findChannel(aChannel);
		if (channel)
		{
			this.userList.userList.innerHTML='';
			for (var i=0;i<channel.users.length;i++)
			{
				this.userList.setUser(channel.users[i].id,channel.users[i].user,channel.users[i].avatar,channel.users[i].status,channel.users[i].sost,channel.users[i].rod,1)
			}
		}
	}

	this.putChat=function(responseText)
	{
		if (responseText!='')
		{
			var arrMsg=responseText.split('|');
			switch (Number(arrMsg[0]))
			{
				case 0:
					this.addChannel(Number(arrMsg[1]),Number(arrMsg[7]),arrMsg[8]);
					ajax.makeRequest('/channels/channelusers.html?method=post&channel='+Number(arrMsg[1]),'GET',null,this.runRequest);
				break;
				case 1:
					this.delChannel(Number(arrMsg[1]));
				break;
				case 3:
					this.deleteMessage(Number(arrMsg[1]),arrMsg[7]);
				break;
				case 4:
					alert(arrMsg[7]);
				break;
				case 5:
					this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],arrMsg[8]+'<a href=# onclick="chat.openChannel('+arrMsg[7]+');return false;"> '+arrMsg[9]+'</a>','');
				break;
				case 6:
					var channel=this.findChannel(Number(arrMsg[1]));
					if (channel)
					{
						channel.panel.innerHTML='';
					}	
				break;
				case 7:
				// 7-Действие 8-Время 9-Код бана 10-Причина 11-ID юзера
					this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],this.toNick(arrMsg[4],0)+'<i> '+arrMsg[7]+' </i>'+this.toNick(arrMsg[5],0)+'<i>. На '+arrMsg[8]+' минут. Причина &mdash;</i> '+arrMsg[10],'');
					if (arrMsg[9]>2)
					{
						this.deleteChannelUser(Number(arrMsg[1]),arrMsg[11])
					}	
				break;
				case 8:
					if (this.myNik==arrMsg[5])
					{
						window.location.reload();
					}
				break;
				case 9:
					if (this.myNik==arrMsg[5])
					{
						window.location.href=arrMsg[7];
					}
				break;
				case 10:
					this.started=true;
					this.up(9999);
//					this.selAllUsers();
				break;
				case 11:
					this.started=false;
				break;
				case 12:
					var channel=this.findChannel(Number(arrMsg[1]));
					if (channel)
					{
						for (var i=0;i<channel.users.length;i++)
						{
							if(channel.users[i].id==arrMsg[8])
							{
								channel.users[i].sost=arrMsg[7];
								this.userList.setUserSost(arrMsg[8],arrMsg[7]);
								this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],'<span class=\"smessage\">От </span>'+this.toNick(arrMsg[4],0)+': <i> меняю статус на &rarr; <img class="imgmed" src="/modules/chat/images/'+this.userList.sost[arrMsg[7]].img+'" /> '+this.userList.sost[arrMsg[7]].sost+'</i>','');
							}
						}

					}
				break;
				case 13:
					if (this.myNik==arrMsg[4] || this.myNik==arrMsg[5])
					{
						this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],this.toNick(arrMsg[4],1)+' <i>вызывает</i> '+this.toNick(arrMsg[5]),'');
						if(this.myNik!=arrMsg[4])
						{
							this.flashTitle('Вызвал '+arrMsg[4]+' !',60);
						}
						this.playSound('sound_3');
					}
				break;
				case 14:
					this.selTab(Number(arrMsg[1]));
				break;
				case 20:
					this.setChannelUser(Number(arrMsg[1]),arrMsg[7],arrMsg[4],arrMsg[6],arrMsg[8],Number(arrMsg[9]),arrMsg[10])
//					this.setPrivatUser(Number(arrMsg[1]));
				break;
				case 21:
					this.deleteChannelUser(Number(arrMsg[1]),arrMsg[7])
				break;
				case 22:
					this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],'<i>Входит</i> '+this.toNick(arrMsg[4]),0,'messeventin','inlinechat');
					this.setChannelUser(Number(arrMsg[1]),arrMsg[7],arrMsg[4],arrMsg[6],arrMsg[8],Number(arrMsg[9]),arrMsg[10])
					this.playSound('sound_1');
				break;
				case 23:
					if (this.myNik!=arrMsg[4] || !this.started)
					{
						this.messageSys(arrMsg[2],Number(arrMsg[1]),arrMsg[3],this.toNick(arrMsg[4])+' <i>выходит</i>',0,'messeventout','outlinechat');
						this.deleteChannelUser(Number(arrMsg[1]),arrMsg[7])
						this.playSound('sound_2');
					}	
				break;

				case 100:
				case 101:
					var user=this.userList.getUser(arrMsg[4]);
					if (user)
					{
						if (user.otkl==1)
						{
							this.messageStr(arrMsg[2],Number(arrMsg[0]),arrMsg[1],arrMsg[4],arrMsg[5],arrMsg[3],arrMsg[6],arrMsg[7]);
						}
					}else{
						this.messageStr(arrMsg[2],Number(arrMsg[0]),arrMsg[1],arrMsg[4],arrMsg[5],arrMsg[3],arrMsg[6],arrMsg[7]);
					}	
				break;
				case 200:
				break;
			}
		}
	}

	this.setUserSost=function(aSost)
	{
		ajax.makeRequest('/channels/sost.html?method=post&sost='+aSost+'&channel='+this.thisChannel.id,'GET',null,this.runRequest);
	}

	this.callUser=function(aUser)
	{
		ajax.makeRequest('/channels/calluser.html?method=post&user='+aUser+'&channel='+this.thisChannel.id,'GET',null,this.runRequest);
	}

	this.messageSys=function(aId,aChannel,aTime,aMessage,aClass,aClassDiv)
	{
		var panelout=this.findChannel(aChannel);
		if (panelout)
		{
			var msg=bbcode.parserBBcode(aMessage);
			var msg_div=document.createElement('div');
			msg_div.id='id_'+aId;
			msg_div.className=aClassDiv;
			if (aClass!='')
			{
				msg_div.innerHTML='<span class=\"'+aClass+'\"><small><img src="/modules/chat/images/time.gif" alt="&bull;"/>'+this.timeStr(aTime)+'</small> '+aMessage+'</span>';
			}else{
				msg_div.innerHTML='<small><img src="/modules/chat/images/time.gif" alt="&bull;"/>'+this.timeStr(aTime)+'</small> '+aMessage;
			}	
			panelout.panel.appendChild(msg_div);
			this.up(500);
		}else{
			this.addChannel(aChannel,0,'Канал '+aChannel);
			this.messageSys(aId,aChannel,aTime,aMessage,aClass)
			ajax.makeRequest('/channels/initchannel.html?method=post&channel='+aChannel,'GET',null,this.runRequest);
		}
	}

	this.messageStr=function(aId,aCommand,aChannel,aFrom,aTo,aTime,aAvatar,aMessage)
	{
		var panelout=this.findChannel(aChannel);
		if (panelout)
		{
			var msg=bbcode.parserBBcode(aMessage);
//			alert(msg);		
			var msg_div=document.createElement('div');
				msg_div.id='id_'+aId;
				msg_div.msg=aMessage;
				msg_div.autor=aFrom;
   
			var st='<a name="'+aId+'"></a>';
				st+='<div class="autor"><a  class=\"bld\" title="Адресовать сообщение для '+aFrom+'" href="javascript:chat.selUser(\''+aFrom+'\')">';
				st+='<img src="'+'/avatars/'+(aAvatar!=''?aAvatar:'noavatar.gif')+'" class="autoricon" alt=" " />'+(aFrom.length>10?aFrom.substr(0,10)+'...':aFrom)+'</a>';
				st+='<br /><img src="/modules/chat/images/time.gif" alt=" " /><small>'+this.timeStr(aTime)+'</small></div>';
				if (aTo==this.myNik)
				{
					st+='<div class="messageadr"><div class="messagearradr">';
					if (panelout.type==2)
					{
						this.playSound('sound_4');
						this.flashTitle('Личное сообщение!',60);
					}else{
						this.playSound('sound_5');
						this.flashTitle('Сообщение!',60);
					}	
				}else{
					switch (aCommand)
					{
						case 101:
							this.playSound('sound_3');
							st+='<div class="messageall"><div class="messagearrall">';
						break;
						default:
							st+='<div class="message"><div class="messagearr">';
					}
				}
				st+='</div><div><div><div><div><div class="messcontent"><div class="messagefunc">';
				st+='<a class="anchormes" title="Вставить якорь" href="javascript:chat.insert_a(\''+aId+'\')">#'+aId+'</a>';
				st+='<a title="Вставить цитату" href="javascript:chat.insert_q(\''+aId+'\')"><img alt ="<" src="/modules/chat/images/quotemes.gif"/></a>';
				if (this.adminStatus>1)	st+='<a title="Удалить сообщение" href="javascript:chat.delete_msg(\''+aId+'\')"><img alt ="x" src="/modules/chat/images/deletemes.gif"/></a>';
				st+='</div>';
				if (aTo!='') st+=this.toNick(aTo)+', ';
				msg_div.innerHTML=st+msg+'</div></div></div></div></div></div></div><div class="clearfloat"></div>';
				panelout.panel.appendChild(msg_div);
				this.up(500);
				if (this.thisChannel.id==aChannel)
				{
					setTimeout("chat.deleteOldMsg()",2000);
				}else{
					var panelout=this.findChannel(aChannel);
					if (panelout)
					{
						var nods=panelout.panel.getElementsByTagName('div');
						if (nods.length/11>this.maxMessages)
						{
							panelout.panel.removeChild(nods[0]);
						}
					}	
				}
		}else{
			this.addChannel(aChannel,0,'Канал '+aChannel);
			this.messageStr(aId,aCommand,aChannel,aFrom,aTo,aTime,aAvatar,aMessage);
			ajax.makeRequest('/channels/initchannel.html?method=post&channel='+aChannel,'GET',null,this.runRequest);
		}
 	}

 	this.deleteOldMsg=function()
 	{
		var panelout=this.findChannel(this.thisChannel.id);
		if (panelout)
		{
			var nods=panelout.panel.getElementsByTagName('div');
			if (nods.length/11>this.maxMessages)
			{
				panelout.panel.removeChild(nods[0]);
			}
		}	
 	}

	this.addPrivat=function()
	{
		if (this.thisChannel.touser!=this.myNik && this.thisChannel.touser!='')
		{
			if (this.isUserOnLine(this.thisChannel.id,this.thisChannel.touser))
			{
				ajax.makeRequest('/channels/addprivat.html?method=post&user='+this.thisChannel.touser+'&channel='+this.thisChannel.id,'GET',null,this.runRequest);
			}else{
				alert('Пользователь '+this.thisChannel.touser+' вышел из чата !');
			}	
		}
	}

	this.addPrivatUser=function(user)
	{
		if (user!='')
		{
			if (this.isUserOnLine(this.thisChannel.id,user))
			{
				ajax.makeRequest('/channels/addprivat.html?method=post&user='+user+'&channel='+this.thisChannel.id,'GET',null,this.runRequest);
			}else{
				alert('Пользователь '+user+' вышел из чата!');
			}	
		}
	}

	this.delChannel=function(aChannel)
	{
		if (this.arrChannel.length>1)
		{
			this.delTab(aChannel);
			for (var i=0;i<this.arrChannel.length;i++)
			{
				if (this.arrChannel[i].id==aChannel)
				{
					this.arrChannel.splice(i,1);
					this.selTab(this.arrChannel[0].id);
					break;
				}
			}	
		}
	}

	this.closeChannel=function(aChannel)
	{
		if (this.arrChannel.length>1)
		{
			ajax.makeRequest('/channels/closechannel.html?method=post&channel='+aChannel,'GET',null,this.runRequest);
		}	
	}

	this.closeThisChannel=function()
	{
		if (this.arrChannel.length>1)
		{
			ajax.makeRequest('/channels/closechannel.html?method=post&channel='+this.thisChannel.id,'GET',null,this.runRequest);
		}	
	}
	
	this.changeIcon=function(aIcon)
	{
        var head=document.getElementsByTagName("head")[0];
        var links=head.getElementsByTagName("link");
        for (var i=0;i<links.length;i++)
        {
			var lnk=links[i];
			if (lnk.rel=="shortcut icon")
			{
				head.removeChild(lnk);
				return;
			}
		}
		var link = document.createElement("link");
		link.setAttribute("href",aIcon);
		link.setAttribute("type","image/x-icon");
		link.setAttribute("rel","shortcut icon");
		head.appendChild(link);
	}

	this.flashTitle=function(aTitle,aTime)
	{
		if(this.started)
		{
			this.flashTitleTime=aTime;
			this.DocumentTitle=aTitle;
		}
	}

	this._flashTitle=function()
	{
		if (this.DocumentTitle && this.flashTitleTime>0)
		{
			if (this.countAnimate>=this.animateTitle.length) this.countAnimate=0;
			this.changeIcon(this.images_path+this.animateFavicon[this.countAnimate]);
//			document.title=this.animateTitle[this.countAnimate]+' '+this.DocumentTitle+' - '+this.originalDocumentTitle;
			document.title='Сообщение!';
			this.countAnimate++;
			this.flashTitleTime--;
		}else{
			this.changeIcon('/images/favicon.ico');
			document.title=this.originalDocumentTitle;
		}
	}

	this.clearChannel=function()
	{
		this.thisChannel.panel.innerHTML='';
	}

	this.writeButtons=function(aId)
	{
		var chbut1=document.getElementById("chbutton1");
		var chbut2=document.getElementById("chbutton2");
		var chbut3=document.getElementById("chbutton3");
		switch (this.thisChannel.type)
		{
			case 0:
				chbut1.style.visibility='visible';
				chbut2.style.visibility='visible';
			break;
			case 1:
				chbut1.style.visibility='visible';
				chbut2.style.visibility='visible';
			break;
			case 2:
				chbut1.style.visibility='visible';
				chbut2.style.visibility='visible';
			break;
		}
	}

	this.openChannel=function(aChannel)
	{
		ajax.makeRequest('/channels/initch.html?method=post&channel='+aChannel,'GET',null,this.runRequest);
		this.hideAllPanels();
	}

	this.createChannel=function(aDescription,aUsers,aSendPr)
	{
	    var params='channel='+this.thisChannel.id+'&type='+(aUsers==''?'0':'1&'+aUsers)+'&sendpr='+aSendPr+'&description='+encodeURIComponent(aDescription);
		ajax.makeRequest('/channels/createchannel.html?method=post','POST',params,this.runRequest);
	}

	this.moderChannel=function()
	{
		windowopen("/channels/moder.html?method=view&channel="+this.thisChannel.id,710,400);
	}

	this.selUser=function(aUser)
	{
		var user;
		this.adress1.className="";
		this.adress2.className="";
		this.thisChannel.touser=aUser;
		editor.textArea.focus();
		this.sendObjavl=false;
		user=document.getElementById("postadress");
		user.innerHTML='для <b>'+aUser+'</b>';
		if (!this.userList.selUser(aUser)) this.selAllUsers();
	}

	this.selAllUsers=function()
	{
		var user;
		this.adress1.className="userblockactive";
		this.adress2.className="";
		this.thisChannel.touser='';
		this.userList.unselUsers();
		editor.textArea.focus();
		this.sendObjavl=false;
		if (this.thisChannel.type==2)
		{
			this.displayTab(this.arrChannel[0].id);
		}
		user=document.getElementById("postadress");
		user.innerHTML='для <b>всех</b>';
	}

	this.selObjavl=function()
	{
		var user;
		this.selAllUsers();
		this.adress1.className="";
		this.adress2.className="userblockactive";
		this.sendObjavl=true;
		user=document.getElementById("postadress");
		user.innerHTML='объявление';
	}

	this.smilesPanel=function(obj)
	{
		if (this.smilespanel.style.display=="none")
		{
			this.hideAllPanels();
			editor.smilespanel();
			this.smilespanel.style.display="block";
			var bt_ps=getElementPosition(obj);
			var pn_ps=getElementPosition(this.smilespanel);
			this.smilespanel.style.left=bt_ps.left-2+'px';
			this.smilespanel.style.top =bt_ps.top-pn_ps.height+16+'px';
			editor.textArea.focus();
		}else this.hideAllPanels();
	}

	this.displayPanel=function(tab_id,url)
	{
		var tabElm,tabContainerElm,nodes,i,frame;
		uploadframe=document.getElementById('uploadframe');
		if (url!='')
		{
			uploadframe.src=url;
		}
		tabElm=document.getElementById(tab_id);
		tabContainerElm=tabElm?tabElm.parentNode:null;

		if (tabElm && tabContainerElm)
		{
			nodes = tabContainerElm.childNodes;
			for (i = 0;i < nodes.length; i++)
			{
				if (nodes[i].nodeName == "LI")
					nodes[i].className = '';
			}
			tabElm.className='current';
		}
	}

	this.uploadPanel=function(obj)
	{
		if (chat.uploadfile.style.display=="none")
		{
			this.hideAllPanels();
			chat.uploadfile.style.display="block";
			this.displayPanel('t1_tab','/loadfile.html?method=view')
			var bt_ps=getElementPosition(obj);
			var pn_ps=getElementPosition(chat.uploadfile);
			chat.uploadfile.style.left=bt_ps.left-2+'px';
			chat.uploadfile.style.top =bt_ps.top-pn_ps.height+16+'px';
			editor.textArea.focus();
		}else this.hideAllPanels();
	}

	this.channelsPanel=function(obj)
	{
		if (this.channelspanel.style.display=="none")
		{
			this.hideAllPanels();
			this.channelspanel.style.display="block";
			var bt_ps=getElementPosition(obj);
			var pn_ps=getElementPosition(this.channelspanel);
			this.channelspanel.style.left=bt_ps.left-456+'px';
			this.channelspanel.style.top =bt_ps.top-pn_ps.height+401+'px';
			editor.textArea.focus();
			channelsframe=document.getElementById('channelsframe');
			channelsframe.src="/channels/viewchannels.html?method=view&channel="+this.thisChannel.id
		}else this.hideAllPanels();
	}

	
	this.hideAllPanels=function()
	{
		chat.uploadfile.style.display='none';
		chat.smilespanel.style.display='none';
		chat.channelspanel.style.display='none';
	}
}

function startChat(aId,aNik,aRefreshtime,aAdminStaus)
{
	var autor=document.getElementById("autor");
		autor.innerHTML+=aNik;
	chat=new classChat(aId,aNik,aAdminStaus);

	chat.adress1=document.getElementById("aadress1");
	chat.adress2=document.getElementById("aadress2");

	chat.ulTabs=document.getElementById("ultabs");
	chat.panelw=document.getElementById("panelw");

	chat.set_soundimg();
	chat.refreshTime=aRefreshtime;
	
	bbcode.format_smile='<a title="%2" class="sml" href="javascript:editor.insertAtCaret(\' %2\')"><img alt="%2" src="%1"/></a>';
	smiles.init();
	
	chat.smilespanel =document.getElementById("smilespanel");
	chat.smilespanel.style.display='none';

	panelb=document.getElementById("smilespanelbody");
	panelt=document.getElementById("smilestags");

	chat.uploadfile=document.getElementById("uploadfilepanel"); 
	chat.displayPanel('t1_tab','');

	chat.channelspanel =document.getElementById("channelspanel");

	editor.init(document.f.msg,chat.smilespanel,panelb);
	editor.selectsmpanel(0);
	editor.writeSmilesTags(panelt,[0,1,2,3,4,5,6,7]);

	ajax.makeRequest('/channels/init.html?method=post','GET',null,chat.runRequest);
	setInterval('chat.refreshChat()',1000);
	setInterval('chat._flashTitle()',200);

	editor.onSend=function()
	{
		chat.is_send();
	}
	
	window.onfocus=function()
	{
		chat.DocumentTitle=null;
	}

	window.onkeydown=function()
	{
		var eve = event || window.event;
		keyPressed=eve.which;
	}

	window.onkeyup=function()
	{
		keyPressed=0;
	}

	addEvent(editor.textArea,'click',chat.hideAllPanels);
	addEvent(document,'resize',chat.hideAllPanels);
}

