var sml_img = { };

// Ïåðåìåííûå ãîëîñîâóõ
var mediaRecorder
var setIntervalSound
var timerSecMessage = 0
var flagVoice = false
var chunksVoice = []

Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = 0, len = this.length; i < len; i++) {
        if(this[i] && this[i].parentElement) {
            this[i].parentElement.removeChild(this[i]);
        }
    }
}

var chat = {
	key:'',
	room:'',
	count:0,
	time:0,
	t:null, //timer
	t2:null, //timer 2
	t_all:{}, //time molch
	r:0,
	g:0,
	rtime:37,
	ct:{ '-1':0, '1':15, '2':30, '3':60, '4':300},
	saveData:null,
	msg_id:0,
	nrg:0,
	nozpros:0,
	newmsg:0,
	sound:0,
	translit:0,
	filter:0,
	globalMsg:0,
	ignoreList:{x:0,nms:[]},
	citySys:0,
	inObj:null,
	userSendMessage: false,

	efftxt:function(id,txt) {
		var r = txt;
		return r;
	},
	ignore: function (login) {
		if (this.ignoreList[login] != undefined) {
			if ($('#ignr_alu').attr('id') != undefined) {
				$(`#ignr_u_${this.ignoreList[login]}`).remove();
			}
			delete this.ignoreList.nms[this.ignoreList[login]];
			delete this.ignoreList[login];
			return
			//msg
		} 
		
		this.ignoreList.x++;
		this.ignoreList[login] = this.ignoreList.x;
		this.ignoreList.nms[this.ignoreList.x] = login;

		if ($('#ignr_alu').attr('id') != undefined) {
			$('#ignr_alu').html(`${$('#ignr_alu').html()}<div id="ignr_u_${this.ignoreList.x}">    <b>${login}</b> <a target="_blank" href="https://new-combats.com/info/${login}"><img src="https://${top.c.img}/i/inf_capitalcity.gif" onMouseOver="top.hi(this,\'<b>Èíô. î ${login}</b>\',event,5,-2,2,2,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();"></a>   <small><a href="javascript:void(0)" onclick="chat.ignorUn(${this.ignoreList.x})">Clear</a></small>  </div>`);
		}
		return
	},
	getRandom: function (a, b) {
		return a + ((b - a) * Math.random());
	},
	feerverk_id:0,
	feerverk:function(name) {
		if( name == 'fw04' ) {
			var frc = {
				'name':'fw04',
				'x':19,
				'top':this.getRandom(1,35),
				'left':this.getRandom(0,365),
				'width':135,
				'sound':this.getRandom(8,10),
				'height':99,
				'zad':3	
			};
			frc.left -= 35;
		}
		
		if( frc.name != undefined ) {
			this.sendSound( frc.sound );
			var obj = top.frames.main.document.getElementById('frvrks');
			if( obj != undefined ) {
				var newhtml = '';
				var i = 1;
				while( i <= frc.x ) {
					newhtml += `<img style="display:none" id="frvanim_${this.feerverk_id}_img${i}" width="${frc.width}" height="${frc.height}" src="https://img.new-combats.com/fw/${frc.name}/${i}.gif">`;
                    i++;
				}
				newhtml = `<div id="frvanim_${this.feerverk_id}" style="z-index:5000;position:absolute;width:${frc.width}px;height:${frc.height}px;left:${frc.left}px;top:${frc.top}px;">${newhtml}</div>`;
				$(obj).append(newhtml);
				this.feerverk_go( this.feerverk_id , frc.x-1 , frc.name , frc.x , frc.zad );
				this.feerverk_id++;
			}
		}
	},
	feerverk_go: function (id, time_back, img, x, zad) {
		if (zad > 0) {
			setTimeout(`chat.feerverk_go(${id},${time_back},"${img}",${x},0);`, 500 * zad);
		} else {
			time_back--;
			var obj = top.frames.main.document.getElementById(`frvanim_${id}`);
			if (time_back > 0) {
				var img1 = top.frames.main.document.getElementById(`frvanim_${id}_img${(x-time_back+1)}`); //òåêóùàÿ
				if (img1 != undefined) img1.style.display = 'none';
				var img1 = top.frames.main.document.getElementById(`frvanim_${id}_img${(x-time_back+2)}`); //òåêóùàÿ
				if (img2 != undefined) img2.style.display = '';
				setTimeout(`chat.feerverk_go(${id},${time_back},"${img}",${x},0);`, 50);
			} else top.frames.main.document.getElementById(`frvanim_${id}`).remove();
		}
	},
	ignorUn: function (x) {
		$(`#ignr_u_${x}`).remove();
		this.ignore(this.ignoreList.nms[x]);
	},
	ignorListOpen: function () {
		var date = '', i = 0;
		var j = 1;
		while (j <= this.ignoreList.x) {
			if (this.ignoreList[this.ignoreList.nms[j]] != undefined) {
				date += `<div id="ignr_u_${j}">    <b>${this.ignoreList.nms[j]}</b> <a target="_blank" href="https://new-combats.com/info/${this.ignoreList.nms[j]}"><img src="https://${top.c.img}/i/inf_capitalcity.gif" onMouseOver="top.hi(this,\'<b>Èíô. î ${this.ignoreList.nms[j]}</b>\',event,5,-2,2,2,\'\');" onMouseOut="top.hic();" onMouseDown="top.hic();"></a>   <small><a href="javascript:void(0)" onclick="chat.ignorUn(${j})">Clear</a></small>  </div>`;
			}
			j++;
		}
		win.add('ignorListWin', 'Ñïèñîê èãíîðèðóåìûõ', `<div id="ignr_alu">${date}</div>`, {}, 0, 1, 'min-width:200px;');
		delete date;
	},

	// ñìàéëû
	addSmile: function (id) {
		$('#textmsg').val(`${$('#textmsg').val()} :${id}: `);
		$('#textmsg').focus();
	},

	lookSmiles: function () {
		if ($('#chbtn8').attr('class') == 'db cp chatBtn8_1') {
			return this.lookSmilesWork('', 'chatBtn8_2')
		}  
		return this.lookSmilesWork('none', 'chatBtn8_1')
	},
	lookSmilesWork: function (display, className) {
		$('#ttSmiles').css('display', display);
		$('#chbtn8').attr('class', `db cp ${className}`);
	},

	// îïòèìèçàöèÿ âñåõ êíîïîê
	greyButton_work: function (elemId, className, method, count ) {
		$(elemId).attr('class', `db cp ${className}`);
		this[method] = count;
	},
	
	// êíîïêà ëåéêè
	// 1
	filterMsg: function () {
		if ($('#chbtn1').attr('class') == 'db cp chatBtn1_1') {
			return this.greyButton_work('#chbtn1', 'chatBtn1_2', "filter", 1)
		} 
		return this.greyButton_work('#chbtn1', 'chatBtn1_1', "filter", 0)
	},

	// êíîïêà ñèñòåìíûõ ñîîáùåíèé
	// 2
	systemMsg: function () {
		if ($('#chbtn4').attr('class') == 'db cp chatBtn4_1') {
			this.greyButton_work('#chbtn4', 'chatBtn4_2', "citySys", 1)
			$.cookie('citySys', 1);
			return
		}
		this.greyButton_work('#chbtn4', 'chatBtn4_1', "citySys", 0)
		$.cookie('citySys', 0);
		return
	},
	
	// êíîïêà àóäèîñîîáùåíèé
	// 3
	soundChat: function () {
		if ($('#chbtn7').attr('class') == 'db cp chatBtn7_1') {
			return this.greyButton_work('#chbtn7', 'chatBtn7_2', "sound", 1)
		} else if ($('#chbtn7').attr('class') == 'db cp chatBtn7_2') {
			return this.greyButton_work('#chbtn7', 'chatBtn7_3', "sound", 2)
		} 
		return this.greyButton_work('#chbtn7', 'chatBtn7_1', "sound", 0)
	},

	// êíîïêà òðàíñëèòà
	// 4
	translitChat: function () {
		if ($('#chbtn6').attr('class') == 'db cp chatBtn6_1') {
			return this.greyButton_work('#chbtn6', 'chatBtn6_2', "translit", 1)
		} 
		return this.greyButton_work('#chbtn6', 'chatBtn6_1', "translit", 0)
	}, 

	subValSend: '',
    subSend: async function () {
        if ($('#textmsg').val() != '') {
            if ($('#textmsg').val() != this.subValSend) {
                if (this.nozpros == 0) {
					this.trmb();
					var textmsg = $('#textmsg').val();

                    if (cb_date[cb_select] == 7 && (textmsg.match(/to *\[(.*?)\].*/i) || textmsg.match(/private *\[(.*?)\].*/i))) {
                        for (var cb in cb_date) {
                            if (cb_date[cb] == 5) {
								open_cb(cb, null);
                            }
                        }
                    }
                    if (typeof window.online_send_jqxhr == "undefined" || window.online_jqxhr.readyState === 4) {
                        window.online_send_jqxhr = $.post('online.php?r' + c.rnd + '&cas' + ((new Date().getTime()) + Math.random()), {
                        	msg: textmsg,
                        	key: this.key,
                        	mid: this.msg_id,
                        	rndo: c.rnd,
                        	cb: cb_date[cb_select]
                        }, function (data) {
                        	chat.clearText();
                        	chat.fc();
							chat.genchatData(data, 1);
							chat.scrollNow(true)
							document.getElementById("textmsg").value = ''
                        });
                    }
                }
            }
        }
    },
	addto:function(login, type2) {
		var loginaddT = login;
		var s = '';
		if($('#'+$(this.inObj).attr('id')).attr('id') == undefined) {		
			$('#textmsg').focus();
			s = $('#textmsg').val();
		} else $(this.inObj).focus();
		var reg555 = new RegExp("private\\s*\\[(.*?)\\]","");
		var reg551 = new RegExp("to\\s*\\[(.*?)\\]","");
		var test1 = s.match(reg555);
		if(s.match(reg555) == null) {
			type = "to";
		} else if(s.match(reg551) == null) {
			type = "private";
		}
		var type3 = 'to';	
		var reg2 = new RegExp(""+type+"(\\s*)\\[(.*?)\\]","");
		var cs = s.replace(reg2,""+type+"$1[,$2,]");
		var slogin = login.replace(/([\^.*{}$%?\[\]+|\/\(\)])/g,"\\$1");
		var reg = new RegExp(""+type+"\\s*\\[.*,\\s*"+slogin+"\\s*,.*\\]","");
		var result = '';
		var reg3 = new RegExp(""+type+"\\s*\\[(.*?)\\]","");				
		while(res = s.match(reg3)) {
			result += `${res[1]},`;
			s = s.replace(reg3,'');
		}
		result = result.replace(/,$/,'');
		var prar = result.split(',');
		for(i = 0; i < prar.length; i++) {
			prar[i] = prar[i].replace(/^\s+/,'');
			prar[i] = prar[i].replace(/\s+$/,'');
		}
		var str = prar.join(', ');
		if(str) login += ', ';
		space = '';
		if (!s.match(/^\s+/)) space = ' ';
		var prob = '';
		if($('#'+$(this.inObj).attr('id')).attr('id') == undefined && (this.inObj == null || $('#main').contents().find('#'+this.inObj.id).attr('id') == undefined))
		{
			if (!cs.match(reg))
			{
				if (type2 == 'to') {
					if (test1 != null) type2 = 'private';
				}
				
				if (loginaddT == 'klan' && type2 == 'private') {
					if (login == 'klan, ') {
						s = type2 + ' [klan] to [' + prob + '' + str + '' + prob + ']' + space + s;
					} else {
						s = type2 + ' [klan]' + space + s;
					}
				}
				else {s = type2+' ['+prob+''+login+str+''+prob+']'+space+s;}
			} else {				
				if(type3 == 'to') type3 = "private";
				s = type3+' ['+prob+''+str+''+prob+']'+space+s;
			}
		} else s = login+str;
		
		if (this.inObj != null && $('#main').contents().find(`#${this.inObj.id}`).attr('id') != undefined) {
			$('#main').contents().find(`#${this.inObj.id}`).val(s);
		} else if ($('#' + $(this.inObj).attr('id')).attr('id') == undefined) {
			$('#textmsg').val(s);
		} else $(this.inObj).val(s);
	},
	clearText: function () {
		$('#textmsg').val('');
	},
	reflesh: function () {
		this.time = 0;
		this.testTimer(true);
	},
	reMoney: function () {
		$('#moneyGM').html(`${top.c.money} êð.`);
	},
    testTimer: function (n) {
        clearTimeout(this.t);
        if ($.cookie('btl') != this.btl) {
            if ($.cookie('btl') > 0) {
                this.sendSound(2);
                if (top.frames['main'].smnpty == undefined) {
					top.frames['main'].location.href = "main.php";
				} 
            }
            this.btl = $.cookie('btl');
        }
        if (this.rtime != this.ct[$.cookie('chatCfg0')] && this.ct[$.cookie('chatCfg0')] != undefined) {
            this.rtime = this.ct[$.cookie('chatCfg0')];
            if (this.time > this.rtime) this.time = this.rtime;
        }
        if (this.rtime >= 5 || this.r == 0) //was >- 30 lakris fix
        {
            if (this.time < 1) {
                var aot = {
                	0: 0,
                	1: 1,
                	2: 0
                };
                if ($('#chcf10').attr('checked') == true) aot[2] = 1;
                if ($('#autoRefOnline').attr('checked') == true || this.r == 0 || n != false) {
                    aot[0] = 1;
                }
                if (this.nozpros == 0) {
                    
                    if (typeof window.online_jqxhr == "undefined" || window.online_jqxhr.readyState === 4) {
                        window.online_jqxhr = $.getJSON(`online.php?r${c.rnd}&cas${((new Date().getTime()) + Math.random())}`, {key: this.key, mid: this.msg_id, r1: aot[0], r2: aot[1], r3: aot[2], rndo: c.rnd}, function (data) {
                            if (data.rnd != null) {
                                chat.genchatData(data);
                                if (data.key != undefined) chat.saveData = data;
                                this.g++;
                                c.rnd = data.rnd;
                            }
                        });
                    }
                }
                this.time = 5;
                this.r++;
            } else this.time--;
            this.t = setTimeout('chat.testTimer(false);clearTimeout(this.t);', 1000);
        }
    },
	
	gUser:function(data,ol) {
		var rt = '';


		function data_work (count) {
			data[count] = this.replaceAll(data[count], "\\", '\\\\');
			data[count] = this.replaceAll(data[count], "[s1;]", '"');
			data[count] = this.replaceAll(data[count], "[s2;]", '`');
			data[count] = this.replaceAll(data[count], "[s3;]", '');
			data[count] = this.replaceAll(data[count], "[s4;]", '');
			data[count] = this.replaceAll(data[count], "<", '');
			data[count] = this.replaceAll(data[count], ">", '');
		}

		if(data[1]!=undefined) {
			rt = data[1];
			if( rt == 'Àäìèíèñòðàòîð' ) rt = this.efftxt('fire',rt);
			if (ol == true) {
				rt = `<a href="javascript:void(0)" onClick="chat.addto(\'${data[1]}\',\'to\')">${rt}</a>`;
			}
			else rt = `<b>${rt}</b>`;
			if(data[13]!=0) rt = `<span class="uCss${data[13]}">${rt}</span>`;
			
			if (data[10] > 0) {
				rt = `<s onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Ïåðñîíàæ áûë çàáëîêèðîâàí\',event,3,1,1,2,\'\')">${rt}</s>`;
			}
			
			if (data[8] != 0)  data_work(8)
			else if (data[9] != 0) data_work(9)

			// òóò
			function rtData (count) {
				return rt = `<img height="15" src="https://${top.c.img}/i/align/align${data[count]}.gif">${rt}`;
			}

			if(data[4]!=0)
			{
				rt = `<a href="/clan/${data[4]}" title="${data[4]}" target="_blank"><img width="24" height="15" src="https://${c.img}/i/clan/${data[4]}.gif"></a>${rt}`;
			}
			
			if( data[16] > 0 ) rtData(16) 
			
			rtData(3)
						
			if(c.lvl>-1)
			{
				if(c.city==data[6])
				{
					if (data[12] > 0) {
						rt = `<a href="javascript:void(0)" onClick="chat.addto(\'${data[1]}\',\'private\')"><img title="Ïåðñîíàæ ñðàæàåòñÿ" src="https://${c.img}/i/lock1.gif" width="20" height="15"></a>${rt}`;
					} else {
						rt = `<a href="javascript:void(0)" onClick="chat.addto(\'${data[1]}\',\'private\')"><img src="https://${c.img}/i/lock.gif" width="20" height="15"></a>${rt}`;
					}
				}else{
					rt = `<img style="padding-right:3px;" onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Ïåðñîíàæ ñåé÷àñ â ${data[6]}\',event,3,1,1,2,\'\')" src="https://${c.img}/i/city_ico/${data[6]}.gif" width="17" height="15">${rt}`;
				}
			}
			rt += `[${data[2]}]<a href="https://${c.url}/info/${data[0]}" target="_blank"><img style="vertical-align:baseline" width="12" height="11" src="https://${top.c.img}/i/inf_${data[5]}.gif" title="Èíô. î ${data[1]}" /></a>`;

			if (data[11] > top.c.time) {
				rt += ` <img id="img_molch${data[1]}" width="24" height="15" style="cursor:help" src="https://${c.img}/i/sleep2.gif" onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Íà ïåðñîíàæà íàëîæåíî çàêëÿòèå ìîë÷àíèÿ.<br>Áóäåò ìîë÷àòü åùå <span id=\\\'molch${data[0]}\\\'>${this.timeOut(data[11])}</span>\',event,3,1,1,2,\'\');chat.justRefMolch(${data[0]})">`;
				this.addRefMolch(data[0], data[11]);
			}

			if (data[14] != "") {
				rt += ` <img width="24" height="15" style="cursor:help" src="https://${c.img}/i/travma2.gif" onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Ó ïåðñîíàæà ${data[14]}\',event,3,1,1,2,\'\');">`;
			}
			if (data[13] > 0) {
				if (data[13] == 2) {
					rt += ` <a target="main" href="/main.php?atak_user=${data[0]}" title="Êðîâàâîå íàïàäåíèå íà ${data[1]}"><img width="13" height="13" src="https://${c.img}/i/clear.gif"></a>`;
				} else {
					rt += ` <a target="main" href="/main.php?atak_user=${data[0]}" title="Íàïàñòü íà ${data[1]}"><img width="13" height="13" src="https://${c.img}/i/curse_attack.gif"></a>`;
				}
			}
			if( data[15] == 1 ) rt = `<span class=woman >${rt}</span>`
		} else rt = '<i>íåâèäèìêà</i>[??]'
		return rt;
	},mlch:{},

	justRefMolch: function (id) {
		$(`#molch${id}`).html(this.timeOut(this.mlch[id]));
	},

	addRefMolch: function (id, tm) {
		this.t_all[id] = setTimeout(`chat.refMolch(${id})`, 1000);
		this.mlch[id] = tm;
	},

	refMolch: function (id) {
		clearTimeout(this.t_all[id]);
		if (this.mlch[id] > 0) {
			$(`#molch${id}`).html(this.timeOut(this.mlch[id]));
			this.t_all[id] = setTimeout(`chat.refMolch(${id})`, 1000);
			return
		} 
		$(`#img_molch${id}`).remove();
		return delete this.mlch[id], this.t_all;
	},

	fc: function () {
		$('#textmsg').focus();
	},
	
	timeOut: function (v) {

		msPerDay = '';

		dt = new Date();
		dt.setTime((v - c.time) * 1000);

		m1 = dt.getUTCMonth();
		d1 = dt.getUTCDay();
		h1 = dt.getUTCHours();
		min1 = dt.getUTCMinutes();
		sec = dt.getUTCSeconds();

		if (m1 > 0) msPerDay = `${m1} ìåñ. `;
		if (d1 > 0 && Math.floor((v - c.time) / (60 * 60 * 24)) == d1) msPerDay = `${d1} ä. `;
		if (h1 > 0) msPerDay += `${h1} ÷. `;
		if (min1 > 0) msPerDay += `${min1} ìèí. `;
		if (sec > 0 && msPerDay != '') msPerDay += `${sec} ñåê. `;
		if (msPerDay == '') msPerDay = 'ìåíüøå ìèíóòû.';

		delete m1, d1, h1, min1, sec;
		return msPerDay;
	},
	deleteMessage: async function (id, fc) {
		if (fc == 1) top.msgdeleted(id)
		else {
			$(`#msg_${id}`).remove();
			$(`#msg_${id}_sys`).remove();
			if (top.c.admin > 0) {
				await fetch(`online.php?jack=${c.rnd}&cas${((new Date().getTime()) + Math.random())}`, {
					method: "POST",
					delMsg: id
				})
			}
		}
	},
	clear: function () {
		if ($('#textmsg').val() == '') {
			if (confirm('Î÷èñòèòü îêíî ÷àòà?')) {
				if (top.des == 1) {
					$(`#canal${top.cb_date[top.cb_select]}`).html('');
					$('#textmsg').focus();
					return
				}
				$('#canal5').html('');
				$('#textmsg').focus();
				return
			}
		} 
		return $('#textmsg').val('');
	},
	scrollNow: function (userTrue) {

		var $chat_list = document.getElementById("chat_list")
		var $countChatList = $chat_list.scrollHeight - $chat_list.scrollTop
		if ($countChatList < $chat_list.offsetHeight + 100) {
			return $chat_list.scrollBy(0, $chat_list.scrollHeight)
		}
		if (userTrue) return $chat_list.scrollBy(0, $chat_list.scrollHeight)
	},
	msgcount:0,
	sendMsg: function(data) {	


		// Åñëè ñèñòåìíîå ñîîáùåíèå îò ìîáà - äëèíà ìàññèâà === 10
		// Èíà÷å - äëèíà ìàññèâà === 17

		// data[0] - êàêîå-òî ÷èñëî
		// data[1] - âèäèìî íîìåð ñîîáùåíèÿ â ÷àòå çà âñ¸ âðåìÿ
		// data[2] - ÷èñëî îò 1 äî 6 êàê óâèäåë
		// data[3] - íèê, åñëè ïîêðàøåííûé
		// data[4] - íèê, åñëè íå ïîêðàøåííûé
		// data[5] - ñàìî ñîîáùåíèå â ÷àòå èç èíïóòà
		// data[6] - öâåò ïîêðàñêè íèêà. Åñëè öâåòà íåò - ïóñòàÿ ñòðîêà
		// data[7] - 0
		// data[8] - 0
		// data[9] - 0
		// data[10] - 0
		// data[11] - 0
		// data[12] - 0
		// data[13] - âðåìÿ
		// data[14] - ïîëíàÿ äàòà
		// data[15] - ïóñòàÿ ñòðîêà
		// data[16] - 0


		var msg_see = 1;
		var global_type = 0;
		
		if( data[5] != undefined ) {
			if( data[5].substring(0,7) == 'global:' ) {
				global_type = 1;
				data[5] = data[5].substring(7);
			}
		}
		if (data[0] == 'new') {
		    data[0] = `new_msg_ ${this.newmsg++}`;
		}
        if (data[2] == 'delete') this.deleteMessage(data[0]);
        else if (data['d'] > 0) this.deleteMessage(data['d']);
		else if (data['s'] > 0) this.deleteMessage(data['s']);
		else if (data[0] != undefined && top.document.getElementById(`msg_${data[0]}`) == undefined) {
			var msg  = '';
				if (data[0] != 0) {
					if (top.c.admin > 0) {
						if (data[12] == 1) {
							msg += '<small style="color:red;text-decoration:blink"> <b>un</b>active </small>';
						}
					}
					if (data[3] != '') {
						if (data[16] > 0) {
							msg += `[<a href="javascript:void(0)" oncontextmenu="top.infoMenu(\'Íåâèäèìêà\',event,\'chat\'); return false;" onClick="chat.addto(\'Íåâèäèìêà\',\'to\')">${data[3]}</a>]`;
						} else {
							msg += `[<a href="javascript:void(0)" oncontextmenu="top.infoMenu(\'${data[3]}\',event,\'chat\'); return false;" onClick="chat.addto(\'${data[3]}\',\'to\')">${data[3]}</a>]`;
						}
						if (chat.ignoreList[data[3]] != undefined) msg_see = 0;
					}
					if (data[4] != '') {
						var forYou = 0;
						//òîò êòî ïèñàë
						
						//êîìó íàïèñàëè, ðàçáîð ìàññèâà
						if (data[4] != '') {
							var to = '',to2 = '',arr = data[4].split(','),i = 0,vl = '';								
							//òåì êîìó ïèñàëè
							while (i != -1) {
								if (arr[i] != undefined) {
									vl = this.trim(arr[i]);
									if (vl.toLowerCase() == top.c.login.toLowerCase()) {
										forYou++;
									}
									if (vl.toLowerCase() == top.c.login.toLowerCase()) {
										vl = this.trim(data[3]);
									}
									if (i > 0) {
										to += ', ';
										to2 += ', ';
									}
									if (data[3] != '') {
										to += `<span style="cursor:pointer" onclick="chat.addto(\'${vl}\',\'private\');" oncontextmenu="top.infoMenu(\'${this.trim(arr[i])}\',event,\'chat\'); return false;">${this.trim(arr[i])}</span>`;

										if (this.trim(arr[i].toLowerCase()) != top.c.login.toLowerCase()) {
											to2 += this.trim(arr[i]);
										} else {
											if (data[2] == 2) to2 += this.trim(arr[i]);
											else to2 += this.trim(vl);
										}
									}
								} else i = -2;
								i++;
							}
						}
						
						if(data[2] == 6 || data[2] == 8) {
							var zmlogin = new RegExp("\\[login:(.*?)\\]","");	
							var reflcd = new RegExp("\\[reflesh_main_zv_priem:(.*?)\\]","");	
							if (data[5].match(zmlogin) != null) {
								zmlogin = data[5].match(zmlogin)[1];
								data[5] = data[5].replace(`[login:${zmlogin}]`, `<a onMouseDown="top.loginGo(\'${zmlogin}\',event);" oncontextmenu="top.infoMenu(\'${zmlogin}\',event,\'chat\'); return false;" title="${zmlogin}" style="cursor:pointer;" onClick="chat.multiAddto(\'${zmlogin}\',\'to\');">${zmlogin}</a>`);
							}
							if (data[5].match(reflcd) != null) {
								reflcd = data[5].match(reflcd)[1];
								data[5] = data[5].replace(`[reflesh_main_zv_priem:${reflcd}]`, '');
							}
						}
						
						//Ñîáèðàåì ìàññèâ êîìó àäðåñîâàíî ñîîáùåíèå
						if (data[2] == 6) {
							//ëè÷íàÿ ñèñòåìêà, âíèìàíèå
							msg += ' <span style="color:red">Âíèìàíèå!</span> ';
						} else if (data[2] == 2) {
							if (forYou > 0) {
								msg += ` <span style="color:${data[6]}"><b>to [${to2}]</b></span>`;
							} else {
								msg += ` <span style="color:${data[6]}">to [${to2}]</span>`;
							}
						} else if (data[2] == 3) {
							if (this.trim(data[3].toLowerCase()) == top.c.login.toLowerCase()) {
								forYou++;
							}
							if (data[3] != '') {
								if (data[4] == 'klan' && data[2] == 3) {
									msg += ' <span class="klan"><span style="cursor:pointer" onclick="chat.multiaddto(\'klan\',\'private\');">private [klan]</span></span>';
								} else if (data[4] == 'paladins' && data[2] == 3) {
									msg += ' <span class="klan"><span style="cursor:pointer" onclick="chat.multiaddto(\'paladins\',\'private\');">private [paladins]</span></span>';
								} else if (data[4] == 'tarmans' && data[2] == 3) {
									msg += ' <span class="klan"><span style="cursor:pointer" onclick="chat.multiaddto(\'tarmans\',\'private\');">private [tarmans]</span></span>';
								} else {
									msg += ` <span class="private"><span style="cursor:pointer" onclick="chat.multiaddto(\'${to2}\',\'private\');">private [ </span>${to}<span style="cursor:pointer" onclick="chat.multiAddto(\'${to2}\',\'private\');"> ]</span></span>`;
								}
							}
						}						
					}
					msg += ' ';
				} 
				
				data[5] = this.replaceAll(data[5],"[s1;]",'"');
				data[5] = this.replaceAll(data[5],"[s2;]",'\'');
				data[5] = this.replaceAll(data[5],"[s3;]",'<');
				data[5] = this.replaceAll(data[5],"[s4;]",'>');
				
				if ($.cookie('chatCfg2') != 0) {
					data[5] = chat.testSmile(data[5]);
				}
				
				if (data[6] != 'Black' && data[6] != '') {

					var voiceMessageReg = data[5].match(/audio_[0-9]{10}[.]mp3/g)
					if (voiceMessageReg !== null) {
						msg += `<font color="${data[6]}">
							<audio id="audioPlayerChat" controls style="width:300px;max-width:400px;" height="20px";>
								<source src="/audio/${voiceMessageReg[0]}" type="audio/mp3">
							</audio>
						</font>`;
						voiceMessageReg = ""
					} 
					else {

						if (data.length === 10) {
							msg += `<font color="${data[6]}">${data[5]}</font>`;
						}
						else {

							// https://img.new-combats.com/i/inf_capitalcity.gif
							// inf.php?89489


							// console.log(chat.regexpURL_true(data[5]))
							
							// console.log(`Ññûëêà: ${data[6]}   Òåêñò: ${data[5]}` )
							msg += `<font color="${data[6]}">${chat.regexpURL_true(data[5])}</font>`
							// console.log("îáû÷íîå, öâåòíîå ñîîáùåíèå")
						}

						// msg += `<font color="${data[6]}">${data[5]}</font>`;


						// https://new-combats.com/n/1070/ 		- ×ÈÒÀÒÜ 
						// https://new-combats.com/inf.php?903093 	- ÈÍÔÀ ÌÎÁÎÂ
						// https://img.new-combats.com/i/inf_capitalcity.gif" - ÈÍÔÀ ÌÎÁÎÂ

						// console.log(chat.regexpURL_true(data[5]))
						// msg += `<font color="${data[6]}">${chat.regexpURL_true(data[5])}</font>`
					}

				} else {

					
					
					// var regexpURL = /[-a-zA-Z0-9@:%_\+.~#?&\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/=]*)?/gi
					// var adressURL = data[5].match(regexpURL)

					// if (adressURL !== null) { 
					// 	msg += `<a href="${adressURL}">${adressURL}</a>`
					// }

					var voiceMessageReg = data[5].match(/audio_[0-9]{10}[.]mp3/g)
					if (voiceMessageReg !== null) {
						msg += `<audio id="audioPlayerChat" controls style="width:300px;max-width:400px;" height="20px";>
							<source src="/audio/${voiceMessageReg[0]}" type="audio/mp3">
						</audio>`
						voiceMessageReg = ""
					}
					else {
						msg += chat.regexpURL_true(data[5])
						// msg += data[5];
					}

				}
				
				if(data[2] == 21) {						
					//e text
					var text = `[loginfrom] ${data[5]}`;
					var ftps = `<i><a href="javascript:void(0)" oncontextmenu="top.infoMenu(\'${data[3]}\',event,\'chat\'); return false;" onClick="chat.addto(\'${data[3]}\',\'to\')">${data[3]}</a></i>`;
					var mblogin = new RegExp("\\[login:(.*?)\\]","");
					text = text.replace('[loginfrom]',ftps);
					if(text.match(mblogin)!=null)
					{
						mblogin = text.match(mblogin)[1];
						text = text.replace(`[login:${mblogin}]`,`<i><a href="javascript:void(0)" oncontextmenu="top.infoMenu(\'${mblogin}\',event,\'chat\'); return false;" onClick="chat.addto(\'${mblogin}\',\'to\')">${mblogin}</a></i>`);
					}
					msg = `<i>${text}</i>`;			
				}
				if(data[1]>0)
				{
					var td = new Date((parseInt(data[1]))*1000);
					td = [td,null,null,null];
					td[1] = td[0].getHours();
					td[2] = td[0].getMinutes();
					td[3] = td[0].getSeconds(); 
					td[4] = td[0].getDay(); 
					td[5] = td[0].getMonth();
					td[6] = td[0].getYear();
					var j = 1;
					while (j < 6) {
						if (td[j] < 10) td[j] = `0${td[j]}`;
						j++;
					}
					
					var cls = forYou > 0 ? 'date2' : 'date'
					if (data[11] > 0) {
						msg = `<font style="cursor:help" color="red" onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Îòïðàâèòåëü íàêàçàí çà íàðóøåíèå ïðàâèë îáùåíèÿ<br>Îòêëþ÷èòü îòîáðàæåíèå ïîäîáíûõ ñîîáùåíèé ìîæíî â íàñòðîéêàõ ÷àòà.\',event,3,1,1,3,\'\')"> <b>!</b> </font>${msg}`;
					}
					if (data[10] > 0) {
						msg = `<font style="cursor:help" color="green" onmouseout="top.hic()" onmousedown="top.hic()" onmouseover="top.hi(this,\'Ýòî ãëîáàëüíîå ñîîáùåíèå, îíî ìîæåò áûòü îòïðàâëåíî èç ëþáîé ëîêàöèè<br>Îòêëþ÷èòü îòîáðàæåíèå ïîäîáíûõ ñîîáùåíèé ìîæíî â íàñòðîéêàõ ÷àòà.\',event,3,1,1,3,\'\')"> <b>G</b> </font>${msg}`;
					}
					var msg22  = '<span ';
					if(top.c.admin > 0) {
						msg22 += `oncontextmenu="chat.deleteMessage(${data[0]});
						return false;" `;
					}

					// ÎÏÒÈÌÈÇÀÖÈß!!!
					if (data[8] == 2) {
						if (data[14] == undefined) {
							data[14] = '--:--';
						}
						if (data[14] == '--:--' && data[1] > 0) {
							data[14] = data[1];
							var date14 = new Date(data[14] * 1000);
							data[14] = `${date14.getHours()}:${date14.getMinutes()}`;
						}
						msg22 += `class="${cls}">${data[14]}</span> `;
					} else {
						if (data[13] == undefined) {
							data[13] = '--:--';
						}
						if (data[13] == '--:--' && data[1] > 0) {
							data[13] = data[1];
							var date13 = new Date(data[13] * 1000);
							data[13] = `${date13.getHours()}:${date13.getMinutes()}`;
						}
						msg22 += `class="${cls}">${data[13]}</span> `;
					}
					msg = msg22+msg;
				}
				this.msgcount++;
				
			msg = `<span class="m0c1" id="msg_${data[0]}">${msg}<br></span>`;
			
			if (forYou > 0 && this.sound > 0 && this.trim(data[3].toLowerCase()) != top.c.login.toLowerCase()) {
				this.sendSound(1);
			}
			
			if(msg_see == 1)
			{
				if(this.trim(data[3].toLowerCase()) == top.c.login.toLowerCase() || forYou == 1 || this.filter == 0)
				{
					if( data[9] > 0 ) this.sendSound(data[9]);
					if( data[15] != undefined && data[15] != 0 ) {
						this.feerverk( data[15] );
						this.feerverk( data[15] );
					}
					
					if( top.des == 1 ) {
						if( data[2] < 4 || global_type == 1 ) {
							//Îáû÷íûé ÷àò
							chat.textColor_Work('#canal5', msg, 5)
							if( global_type == 1 ) {
								//Ñèñòåìíûé ÷àò
								chat.textColor_Work('#canal4', msg, 4)
							}
						}else{
							//Ñèñòåìíûé ÷àò
							chat.textColor_Work('#canal4', msg, 4)
							chat.textColor_Work('#canal5', msg, 5)
						}
					}
					else {
						// var $htmlElementsMessage = new DOMParser().parseFromString(messg, "text/html").getElementsByTagName("span")[0]
						// document.getElementById('canal5').append($htmlElementsMessage)
						$('#canal5').html(`${$('#canal5').html()}${msg}`); 
					}
				}
			}
			this.scrollNow(false);
			return delete forYou, cls, msg_see, msg, arr;
		}
	},
	textColor_Work: function (canal ,messg, count) {
		var $htmlElementsMessage = new DOMParser().parseFromString(messg, "text/html").getElementsByTagName("span")[0]
		var $idCanal = canal.match(/canal[0-9]/)
		var $idCanal0 = document.getElementById($idCanal[0])
		if (!$idCanal0) $(canal).html(`${$(canal).html()}${messg}`)
		else $idCanal0.append($htmlElementsMessage)
		// console.log(messg)
		// document.getElementById($idCanal[0]).append($htmlElementsMessage)
		top.blueTextSee(count);
	},
	testKey: function (m, v) {
		var i = 0, r = v;
		v = false;
		while (i != -1) {
			if (m[i] != undefined) {
				if (m[i] == r) {
					v = i;
					i = -2;
				}
			} 
			else i = -2;
			i++;
		}
		delete r, m;
		return v;
	},
	isNumber: function (s) {
		return s = !isNaN(s) ? true : false
	},
	testSmile: function (txt) {
		txr = txt.split(':');
		var i = 1,
			j = 0,
			smid = 0;
		while (i <= txr.length) {
			if (txr[i] != undefined) {
				smid = this.testKey(top.sml, txr[i]);
				imsml = txr[i].split('-');
				if (((smid != false || smid == 0) && this.isNumber(txr[i]) != true) || (imsml != undefined && imsml[0] == '%usersmile%')) {
					if (j < 3 && this.isNumber(top.sml[smid]) != true && (top.sml[smid] != undefined || imsml[0] == '%usersmile%')) {
						// òóò
						if (imsml[0] == '%usersmile%') {
							txt = txt.replace(`\:%usersmile%-${imsml[1]}\:`, `<img src="https://${top.c.img}/i/smile/${(imsml[1].toLowerCase())}.gif" title="Èìåííîé ñìàéëèê">`);
						} else {
							txt = txt.replace(`\:${txr[i]}\:`, `<img src="https://${top.c.img}/i/smile/${(txr[i].toLowerCase())}.gif" style="cursor:pointer" width="${top.sml[smid+1]}" height="${top.sml[smid+2]}" onclick="chat.addSmile(\'${(txr[i].toLowerCase())}\')">`);
						}
						j++;
					}
				}
			}
			i++;
		}
		return txt;
	},
	trmb: function () {
		if (this.translit == 1) {
			$('#textmsg').val(this.convert2($('#textmsg').val()));
		}
	},
	replaceAll: function (t, v, s) {
		return t.split(v).join(s);
	},
	regexpURL_true (str) {
		var finallyStr = str
		var arrURL = str.match(/[-a-zA-Z0-9à-ÿÀ-ÿ@:;%_\+.~#?&\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:;%_\+.~#?&\/=]*)?/gi)
		var domainsRUS = str.match(/[a-zA-Z0-9à-ÿÀ-ß-]+[.,:;\/?!@#$%^&*()_+-`'"|]+(êîì|ðó|þà)+/gi)
		var domainsEN = str.match(/[a-zA-Z0-9à-ÿÀ-ß-]+[ .,:;\/?!@#$%^&*()_+-`'"|]+\b(c[o]+m|ua|r[u]{1,}|net|cc)+\b/gi)
		var regexpForbiddenWords = /\b(old|rebk|combatz|sbkru|urlidru|real|obk2com|bitly|owly|cruelbk|likebk|isgd|fightbk|my-|my-combatc|mbk|anti|ws|s3s|bakubk|idealbk|bespridel|perbk|online|cf|artovik|probk|twar|oyy|krbk|habk|timebk|sbi|eea|sokbk|inbk|refbk|s3s|bk20|analogbk|monstrbk|legendabk|awOev|cruelcity|tlgr|vntr|supbk|cu|tn|af|svel|kwn|krati|ohh|gHjq|ogw|lur|lmy|idz|hop|eee|bestbk|pixl|ssylka|f34r|exelendbk|9tl|qil|2t9|NjQ0|net|bishky|getl|ixz|nvm|prok|5char|tdl|pick|jj|FORM|zik|biz|sns|snsh|pnut|pb8|short|legendabk|prnt|utf|coombats|tiny|orDåNÂÊ|nbk|orden|club|utf|ubit|clc|wocmaet|wiecej|ourl|3le|NikY|fia|iop|ordenbk|s3s|sW|sw|so|xcombat|world|death|legendbattles|plu|dbe|kombatz|over|dek|ci8|goldbk|Zeus|nxt|is|Ndpx|pw|kutt|JovdeT|cort|rexno|bly|tFXUQ|fyi|yf0ck|lst|numl|yx5ru|vhGyJ|GEROY|MOYEP|fuck|lnnk|dhaF|oko|x8b4q|3le|Ru2q|psce|yx5|bg9xH|Rich|Lands|yx|bgH|qil|huxoqM|bgxH|Nextbk|idea|PLAYBK|dance|coronabk|hitbk|ttpham|prnt|RÑîìbàts|dedmoroz|wmj9bz|king|ZEBK|urlgo|ZniD)+\b/g

		finallyStr = str.replace(regexpForbiddenWords, () => "")

		var allURL = new Set()

		if (domainsEN) for (var key of domainsEN) {
			if (!key.match(/^[a-zA-zà-ÿÀ-ÿ0-9]+$/i)) allURL.add(key)
		}
		
		if (domainsRUS) for (var key of domainsRUS) {
			if (!key.match(/^[a-zA-zà-ÿÀ-ÿ0-9]+$/i)) allURL.add(key)
		}
		if (arrURL) for (var key of arrURL) allURL.add(key)
		if (!allURL.size) return finallyStr

		var trueURL = []
		var falseURL = false

	
		for (var key of allURL) {
			if (key.match(/vk\.com/i)) trueURL.push(key)
			else if (key.match(/youtube\.com/i)) trueURL.push(key)
			else if (key.match(/youtu\.be/i)) trueURL.push(key)
			else if (key.match(/twitch\.tv/i)) trueURL.push(key)
			else if (key.match(/new-combats\.com/i)) trueURL.push(key)
			else if (key.match(/https:\/\/rpgtop\.su\/vote\/25443/i)) trueURL.push(key)
			else if (key.match(/inf\.php/i)) trueURL.push(key)
			else  falseURL = true
		}

		if (falseURL) return "Â ñîîáùåíèè ïðèñóòñòâóþò çàïðåùåííûå ññûëêè."

		finallyStr = finallyStr.replace(
			/(<img src=")?(https?:\/\/)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z()]{1,6}\b([-a-zA-Z0-9()@:%_;\+.~#?&\/\/=]*)/gi,
			(match) => {
			  if (/^(<img src=")/.test(match)) {
				  return match
			  }
			  else if (match.match(/new-combats\.com/i)) return match
			  else if (match.match(/inf\.php/i)) return match
			  else if (/^(https?:\/\/)/.test(match)) {
				return `<a class="URL-a" href="${match}" target="_blank">${match}</a>`
			  }
			  else {
				return `<a class="URL-a" href="http://${match}" target="_blank">${match}</a>`
			  }
			}
		  )
		
		  finallyStr = finallyStr.replace(regexpForbiddenWords, () => "")
		
		return finallyStr
	},
	convert2:function(txt)
	{
		var trn = new Array();
		trn = txt.split(' ');
		for(var i=0;i<trn.length;i++) {
			if(trn[i].indexOf("https://") < 0 && trn[i].indexOf('@') < 0 && trn[i].indexOf("www.") < 0 && !(trn[i].charAt(0)==":" && trn[i].charAt(trn[i].length-1)==":")) {
				if ((i<trn.length-1)&&(trn[i]=="to" || trn[i]=="private")&&(trn[i+1].charAt(0)=="[")) {
					while ( (i<trn.length-1) && (trn[i].charAt(trn[i].length-1)!="]") ) i++;
				} else { trn[i] = this.convert(trn[i]); }
			}
		}
		return trn.join(' ');
	},
	map_en:Array('s`h','S`h','S`H','s`Õ','sh`','Sh`','SH`',"'o",'yo',"'O",'Yo','YO','zh','w','Zh','ZH','W','ch','Ch','CH','sh','Sh','SH','e`','E`',"'u",'yu',"'U",'Yu',"YU","'a",'ya',"'A",'Ya','YA','a','A','b','B','v','V','g','G','d','D','e','E','z','Z','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','r','R','s','S','t','T','u','U','f','F','h','H','c','C','`','y','Y',"'"),
	map_ru:Array('ñõ','Ñõ','ÑÕ','ñÕ','ù','Ù','Ù','¸','¸','¨','¨','¨','æ','æ','Æ','Æ','Æ','÷','×','×','ø','Ø','Ø','ý','Ý','þ','þ','Þ','Þ','Þ','ÿ','ÿ','ß','ß','ß','à','À','á','Á','â','Â','ã','Ã','ä','Ä','å','Å','ç','Ç','è','È','é','É','ê','Ê','ë','Ë','ì','Ì','í','Í','î','Î','ï','Ï','ð','Ð','ñ','Ñ','ò','Ò','ó','Ó','ô','Ô','õ','Õ','ö','Ö','ú','û','Û','ü'),
	addSm: function (i) {
		$('#textmsg').focus();
		top.document.textmsg.value += ` :${i}: `;
	},


	convert_work: function (id) {
		newstr = str.match(id)[0];
		str = str.replace(str.match(id)[0], '');
	},
	convert: function (str) {
		var p1 = new RegExp("private\\s*\\[(.*?)\\]", "");
		var t1 = new RegExp("to\\s*\\[(.*?)\\]", "");
		var newstr = '';
		
		if (str.match(p1) != null) this.convert_work(p1)
		else if (str.match(t1) != null) this.convert_work(t1)

		for (var i = 0; i < this.map_en.length; ++i)
			while (str.indexOf(this.map_en[i]) >= 0) str = str.replace(this.map_en[i], this.map_ru[i]);
		newstr += str;
		return newstr;
	},
    sendSound: function (s) {
		var svolm = 100;
		if (this.sound == 0) svolm = 0
		else if (this.sound == 1) svolm = 25;
        else if (this.sound == 2) svolm = 100;

        var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
        
        if (isInternetExplorer && window.document["Sound"] && typeof window.document["Sound"].SetVariable !== "undefined") {
            window.document["Sound"].SetVariable("Volume", svolm);
            window.document["Sound"].SetVariable("Sndplay", s);
		} 
		else if(document.getElementById('Sound2') && typeof document.getElementById('Sound2').SetVariable !== "undefined") {
            document.getElementById('Sound2').SetVariable("Volume", svolm);
            document.getElementById('Sound2').SetVariable("Sndplay", s);
        }
        
    },
	getSwf:function(val) {
		var M$ =  navigator.appName.indexOf("Microsoft")!=-1
		return (M$ ? window : document)[val]
	},
	trim: function (s) {
		return this.rtrim(this.ltrim(s));
	},
	ltrim: function (s) {
		return s.replace(/^\s+/, '');
	},
	rtrim: function (s) {
		return s.replace(/\s+$/, '');
	},
	multiaddto: function (users, tp) {
		var arr = users.split(',');
		var i = arr.length;
		while (i >= 0) {
			if (arr[i] != undefined) {
				this.addto(arr[i], tp);
			}
			i--;
		}
	},
	osize:function(obj) {
		var size = 0, key;
		for (key in obj) {
			if (obj.hasOwnProperty(key)) size++;
		}
		return size;
	},
	//Ãåíåðèðóåì äàííûå
	genchatData:function(data,prs) {

		if (prs == 1) {
			// console.log("òóò")
			data = $.parseJSON(data);
		}
		if (data == null && this.saveData != null) {
			data = this.saveData;
			data.js = '';
			data.rn = undefined;
			data.key = undefined;
		}
		//Ïîëó÷àåì ñîîáùåíèå
		if (data.msg != undefined) {
			var ms = $.parseJSON(data.msg);
			// console.log(ms)
			if (ms['ld'] > this.msg_id) this.msg_id = ms['ld'];
			var i = 0;
			while (i <= ms['id']) {
				
				if (ms[`m${i}`] != undefined) {
					// console.group(ms[`m${i}`])
					this.sendMsg(ms[`m${i}`]);
				}
				i++;
			}
		}
		//Åñëè åñòü JS
		if (data.js != '') eval(data.js);
		if(data.rnd!=undefined) c.rnd = data.rnd; 
		if (data.rn != undefined) {
			if ($('#chcf10').attr('checked') == true) {
				$('#roomName').html(`${data.rn}<br><small>Îáùèé îíëàéí: ${data.xu}</small>`);
			} 
			else $('#roomName').html(`${data.rn} (${data.xu})`);
		}
		if(data.key!=undefined)	this.key = data.key;
		if(data.list!=undefined)
		{
			var i = 0, ji = $.parseJSON(data.list), onll = '', fSort = {}, flSort = {},flSortSee = '"Ñëóæáà Ïîääåðæêè"';
			//ñîðòèðóåì äàííûå
			while (i <= data.xu) {
				if (ji[i] != undefined) {
					jj = ji[i][1].toLowerCase(); //ïî ëîãèíó
					fSort[jj] = i;
					flSort[i] = jj;
					flSortSee += `,"${flSort[i]}"`;
				}
				i++;
			}
			flSortSee = eval(`[${flSortSee}]`);
			if ($.cookie('chatCfg9') == 1) flSortSee.sort(game.sort2);
			else flSortSee.sort(game.sort1);
			//Âûâîäèì äàííûå
			i = 0;
			var onll_alh = '';
			while (i <= data.xu) {
				if (fSort[flSortSee[i]] != undefined) {
					if (ji[fSort[flSortSee[i]]][3] == 50) {
						onll_alh += `<span class="m0c1">${this.gUser(ji[fSort[flSortSee[i]]],true)}</span>`;
					} else {
						onll += `<span class="m0c2">${this.gUser(ji[fSort[flSortSee[i]]],true)}</span>`;
					}
				}
				i++;
			}
			$('#onlist').html(`${onll_alh}${onll}`);
		}
	},
	voiceMessage: function () {
		flagVoice = !flagVoice 
		if (flagVoice) return chat.startRecording(flagVoice)
        return chat.startRecording(flagVoice)
	},
	startRecording: function (flag) {

		if (flag) {
			if (navigator.mediaDevices.getUserMedia) {
				var $pVoiceMessages = document.getElementById("timerVoiceMess")
				$pVoiceMessages.hidden = false
				
				var constraints = {
					audio: true
				}
				
				var onSuccess = function (stream) {
					mediaRecorder = new MediaRecorder(stream);


					mediaRecorder.start()

					timerSecMessage = 0
					var timerMlSecMessage = 1

					setIntervalSound = setTimeout(function tickMlsec() {
						if (timerSecMessage === 60) {
							flagVoice = !flagVoice
							
							chat.styleRecordButton({
								textButt: "Çàïèñü",
								color: "",
								backgroundColor: "",
								allSetting: true
							})
							return
						}

						if (timerSecMessage > 9) $pVoiceMessages.textContent =
							`00:${timerSecMessage},${timerMlSecMessage}`
						else $pVoiceMessages.textContent =
							`00:0${timerSecMessage},${timerMlSecMessage}`

						if (++timerMlSecMessage > 9) {
							timerMlSecMessage = 0
								++timerSecMessage
						}

						setIntervalSound = setTimeout(tickMlsec, 100)
					}, 100)

					chat.styleRecordButton({
						textButt: "Çàâåðøèòü",
						color: "rgb(165, 0, 0)",
						backgroundColor: "rgba(255, 0, 0, 0.083)",
						allSetting: false
					})


					mediaRecorder.ondataavailable = function (e) {
						chunksVoice.push(e.data)
					}
				}

				var onError = function (err) {
					console.log(`Îøèáêà: ${err}`)
					alert("Îøèáêà, ïðîâåðüòå ïîäêëþ÷åíèå èëè ðàáîòîñïîñîáíîñòü ìèêðîôîíà!")
				}

				navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError)
			} else console.log("Àóäèîñîîáùåíèÿ íå ïîääåðæèâàþòñÿ âàøèì áðàóçåðîì!")


			return
		}


		chat.styleRecordButton({
			textButt: "Çàïèñü",
			color: "",
			backgroundColor: "",
			allSetting: true
		})
		return
	},
	styleRecordButton: function (objArgs) {
		var {
			textButt,
			color,
			backgroundColor,
			allSetting
		} = objArgs

		var $buttonVoiceMess = document.getElementById("record")
		var $pVoiceMessages = document.getElementById("timerVoiceMess")


		if (allSetting) {
			clearInterval(setIntervalSound)
			
			$pVoiceMessages.textContent = "00:00,0"
			$buttonVoiceMess.textContent = textButt
			$buttonVoiceMess.style.color = color
			$buttonVoiceMess.style.backgroundColor = backgroundColor
			$pVoiceMessages.hidden = allSetting

			if (!mediaRecorder) return alert("Îøèáêà, ïðîâåðüòå ïîäêëþ÷åíèå èëè ðàáîòîñïîñîáíîñòü ìèêðîôîíà! Åñëè Âû ïîäêëþ÷èëè ìèêðîôîí è âñ¸ ðàáîòàåò - ïåðåçàãðóçèòå ñòðàíèöó <F5> è ïîïðîáóéòå ñíîâà!")
			mediaRecorder.stop()
			mediaRecorder.onstop = function (e) {
				chat.mediaRecorderStop()
			}

			mediaRecorder.stream.getAudioTracks().forEach(function (track) {
				track.stop()
			})
			return
		}
		
		var $footerTop = document.getElementsByClassName("allChat")[1].offsetTop
		var $tdLeft =  $buttonVoiceMess.parentElement.offsetLeft
		var $VoiceWidth = $buttonVoiceMess.clientWidth
		var $pVoiceWidth = $pVoiceMessages.clientWidth	
		
		$pVoiceMessages.style.top = `${$footerTop - 30}px`
		$pVoiceMessages.style.left = `${($tdLeft + 9) + (($VoiceWidth - $pVoiceWidth) / 2)}px`

		$buttonVoiceMess.textContent = textButt
		$buttonVoiceMess.style.color = color
		$buttonVoiceMess.style.backgroundColor = backgroundColor
		$pVoiceMessages.hidden = allSetting
		return
	},
	mediaRecorderStop: function () {
	
		if (timerSecMessage < 2) {
			chunksVoice.pop()
			return
		}

		var blob = new Blob(chunksVoice, {
			'type': 'audio/mp3; codecs=opus'
		})

		chunksVoice.pop()

		var fileReader = new FileReader()
		fileReader.readAsArrayBuffer(blob)

		fileReader.onload = async function (event) {

			var $inputWindow = document.getElementById("textmsg")
			var arrayBuffer = fileReader.result

			var response = await fetch("https://new-combats.com/audio.php", {
				method: "POST",
				body: arrayBuffer
			})
			var timeStampFile = await response.text()

			$inputWindow.value =
				`${$inputWindow.value} audio_${timeStampFile}.mp3`
			chat.subSend()
		}
	}
}