/****************************************************************************
 ** �?нициализируем переменные
 ****************************************************************************/

var isFullScreen = false;

var chat1_container;			// Ссылка на контейнер с чатом 1
var chat1_parent_container;
var temp_chat1_parent_container_height = 0;

var chat2_container;			// Ссылка на контейнер с чатом 2
var chat2_parent_container;
var chat1_parent_container_width;
var chat1_parent_container_height;

var chat_list_container;		// Ссылка на контейнер со списком пользователей
var chat_list_parent_container;
var chat_list_parent_container_height;

var tz_container;
var tz_parent_container;
var tz_parent_container_height;

var cmd_form;					// Ссылка на форму отправки сообщений
var cmd_container;				// Ссылка на контейнер с формой отправки сообщений
var cmd_container_height;
var tz;							// Ссылка на флэш
var max_message_length = 240;	// Максимальная длина отсылаемых сообщений

var min_tz_height = 440;		// Минимальная высота флэша

var min_chat_list_parent_container_width = 200;
var min_chat_container_height = 100;
var min_chat_list_parent_container_position = 400;
var min_chat_list_container_width = 280;

var onResizeSavedScroll = 0;


var IE = (!window.opera && navigator.userAgent.toLowerCase().indexOf('msie') != -1);

/****************************************************************************/

var iAlign;
var maxsmiles = 3;					// Максимальное количество смайлов в одной строке
var user = '';						// Логин пользователя
var noScroll = false;				// Не делать автоскролинг
var id_list = 0;					// Обновление списка народа online
var me = {};						// Ссылка на параметры моего перса
var resetlist = false;
var resortlist = true;
var cache = [];
var timeout = 2;					// Кол-во минут для хранения кеша привата
var cache_my_private = true;		// Кешировать мои сообщения
var ignore = {};					// Чёрный список
var chat_cmd_original = [
	'//help',
	'//stop',
	'//start',
	'//away',
	'//scrolloff',
	'//scrollon',
	'//smartscroll',
	'//refreshoff',
	'//refreshon',
	'//font+',
	'//font-',
	' //info',
	'# //trade',
	'# //kiss',
	'# //kiss2',
	'# //kiss3',
	'# //dirt',
	'# //flower',
	'# //flower2',
	'# //flower3',
	'# //venom',
	'# //coin',
	'# //snow', // newyear
	'# private [clan] ',
	'# private [alliance] ',
	'# private [radio] ',
	'#//list',
	'#//battle'
];
var chat_cmd;
/*
var chat_filter = GetCookie('chat_filter') || 127^1;
var chat_system_filter = GetCookie('chat_system_filter') || ((1<<13) - 1);
*/
var sort_obj = {me:0, trade:0, clan:0, rank:0, all:0};
var logins = [];
var RoomName;
var away_text = mes_away_text;
var away_state = false;
var away_stamp = {};				// timestamp последнего ответа каждому игроку
var away_flip = 0;					// антиантифлуд ;-)
var away_offts = 0;					// Dременное отключение away при смене локации
var word_filter_text = '';
var word_filter_array = [];
var scans = [];						// Сюда складываем системки о сканировании
var scan_f = false;					// Отображать ли ситемки со сканированием в чате
var isVip = false;					// Вип ли клиент?
var noChatUpdate = false;			// Обновление чата, флаг

var winheight = parseInt(GetCookie('winheight'));	// Высота 1 контейнера чата
if (!winheight || !/^\d+$/.test(winheight)) winheight = 100;

var chatListWidth = parseInt(GetCookie('chatListWidth')); // Ширина правого фрейма.
if (!chatListWidth || !/^\d+$/.test(chatListWidth)) chatListWidth = min_chat_list_parent_container_width;

var aprilparty = false;				//флаг первоапрельской шутки.
var defaultProfList = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,26,27,28,30];
var resortedList = [];
var invertlogins = false;
var connectionLost = false;

var chatOn = false;

var max_chat_colors = 15;			// Максимально цветов в чате

//new config
var pconf = {
	smartScroll: (GetCookie('smartScroll') == 'true'),	// umniy scrolling
	fontSize: (GetCookie('fontSize') ? GetCookie('fontSize') : 13)		//font size in px
};

// Разрешенные смайлики
var sm = new Array( 
	'crazy',17,24,1,
	'crazyny',74,30,1, 'lesom',47,29,1, 'newyear',45,41,1,
	'crazynuts',22,24,1,'stich',50,30,1,'laugh',20,20,1,'hehe',15,15,1,'smile',15,15,1,'flyhigh',36,37,1,'ponder',21,15,1,'dkn',31,15,1,'wow',15,20,1,'wow2',32,17,1,'nerv',15,16,1,'shy',15,16,1,'red',15,20,1,'sad',23,23,1,'dry',15,15,1,'despair',15,15,1,'cry',16,16,1,'cry2',38,19,1,'help',27,28,1,'spot',22,15,1,'goodbad',22,21,1,'shuffle',24,24,1,'kult',31,16,1,'angel',15,23,1,'beer',15,15,1,'yes',15,15,1,'no',15,15,1,'ok',22,16,1,'wink',15,15,1,'happy',15,15,1,'agree',50,20,1,'greedy',61,20,1,'proud',25,21,1,'idea',26,27,1,'umn',40,40,1,'old',32,28,1,'celebrity',57,38,1,'metal',26,28,1,'str',35,25,1,'bulldog',26,23,1,'jaw',27,20,1,'mad',29,18,1,'wall',25,20,1,'acid',40,24,1,'bayan',39,30,1,'here',27,15,1,'kluv',54,24,1,'ahtung',27,18,1,'csotona',31,31,1,'crzswans',74,22,1,'metals',20,15,1,'gold',20,15,1,'polymers',20,15,1,'organic',20,15,1,'silicon',20,15,1,'radic',20,15,1,'gems',20,15,1,'venom',20,15,1,'gent',15,21,2,'rupor',38,18,2,'dont',22,18,2,'dunno',25,15,2,'mol',30,24,2,'king',21,22,2,'sleep',32,22,2,'lick',15,15,2,'chupa',27,22,2,'cop',15,21,2,'miner',50,22,2,'jeer',26,16,2,'stupid',20,15,2,'stupid2',20,20,2,'protest',26,22,2,'rtfm',24,23,2,'tongue',15,15,2,'tongue2',30,24,2,'tost',43,23,2,'fire',35,25,2,'row',50,25,2,'crazylol',23,24,2,'doctor',35,32,2,'late',32,27,2,'nobody',29,27,2,'friday',57,28,2,'swans',74,22,2,'privet',27,29,2,'priva',56,24,2,'hi',31,28,2,'hello',25,27,2,'joy',31,36,2,'imhere',23,34,2,'popcorn',35,35,2,'die',30,40,2,'hnb',40,40,2,'smoke',20,20,2,'smoke2',34,38,2,'digger',33,33,2,'bye',41,30,2,'ban',41,38,2,'congr',47,43,2,'work',55,44,2,'toothpick',28,16,2,'rose',15,15,3,'heart',16,14,3,'flashka',20,19,3,'nail',32,26,3,'rev',40,25,3,'pester',54,24,3,'kulich',66,29,3,'boogi',100,20,3,'tango',64,24,3,'poshl',43,22,3,'poshl2',42,23,3,'lady',15,19,3,'vantuz',60,30,3,'love',40,21,3,'hug',48,20,3,'hug2',40,20,3,'wedding',43,21,3,'flowers',28,29,3,'divin',38,33,3,'obm',37,22,3,'farewell',40,36,3,'tyt',48,43,3,'ups',53,26,3,'hehehe',41,37,3,'serenade',33,56,3,'admins',55,44,3,'balance',70,57,3,'godig',56,24,3,'cowb',44,29,4,'guns',45,30,4,'boks',62,28,4,'nun',40,28,4,'rambo',27,22,4,'yessir',34,34,4,'nunu',26,22,4,'susel',70,29,4,'monstr',35,30,4,'kruger',34,27,4,'hul',63,24,4,'naem',30,32,4,'budo',54,37,4,'horse',60,40,4,'grenade',52,34,4,'sdaus',35,36,4,'m60',51,18,4,'rocket',100,33,4,'duel',97,32,4,'fresh',33,23,4,'robbery',50,30,4,'maniac',70,25,4,'loser',52,28,4,'broken',80,20,4,'vharmont',47,29,4,'naezd',65,35,4,'nonaim',49,37,4,'maddog',23,31,4,'mosk',36,32,4,'zachot',41,38,4
);

// Список имён исконно-русских смайлов, которые не показывать буржуям
var smRussian = new Array(
	'congr', 'robbery', 'preved', 'row', 'late'
);

// var body1 = '<textarea id="holdtext" style="display:none;"></textarea><div id="oMenu" class="menu" onmouseout="closeMenu(event)"></div>';
var body1 = '';

var reg_url = {};

if (screen.width > 0 && screen.width < 1000) alert(mes_min_size);

if(lang != 'ru') {
	for(var i = 0; i < sm.length; i += 4) {
		for(var ii = 0; ii < smRussian.length; ii++) {
			if(sm[i] == smRussian[ii]) {
				sm.splice(i, 4);
				i -= 4;
			}
		}
	}
}

/****************************************************************************
 ** Вспомогательные функции
 ****************************************************************************/

function $(sId)
{
	return document.getElementById(sId);
}

// Класс для присвоения событий
var CEvent = {
	add : function(eOn, sEvent_type, ptrFunction)
	{
		if (eOn.addEventListener)
		{
			eOn.addEventListener(sEvent_type, ptrFunction, false);
		}
		else if (eOn.attachEvent && sEvent_type != 'selectstart')
		{
			if (!eOn[sEvent_type + ptrFunction])
			{
				eOn['e' + sEvent_type + ptrFunction] = ptrFunction;
				eOn[sEvent_type + ptrFunction] = function()
				{
					eOn['e' + sEvent_type + ptrFunction](window.event);
				};
				eOn.attachEvent('on' + sEvent_type, eOn[sEvent_type + ptrFunction]);
			}
		}
		else
		{
			eOn['on' + sEvent_type] = ptrFunction;
		}
	},
	remove : function(eOn, sEvent_type, ptrFunction)
	{
		if (eOn.removeEventListener)
		{
			eOn.removeEventListener(sEvent_type, ptrFunction, false);
		}
		else if (eOn.detachEvent && sEvent_type != 'selectstart')
		{
			if (eOn[sEvent_type + ptrFunction])
			{
				eOn.detachEvent('on' + sEvent_type, eOn[sEvent_type + ptrFunction]);
				eOn[sEvent_type + ptrFunction] = null;
				eOn['e' + sEvent_type + ptrFunction] = null;
			}
		}
		else
		{
			eOn['on' + sEvent_type] = null;
		}
	}
};



// Включаем выделение
function enableOnSelect()
{
	document.body.className = '';
	CEvent.remove(document, 'selectstart', function(){return false;});
}

// Отключаем выделение
function disableOnSelect()
{
	document.body.focus();

	document.body.className = 'body_no-select';
	CEvent.add(document, 'selectstart', function(){return false;});
}

/****************************************************************************
 ** Функции для отладки
 ****************************************************************************/

function var_dump(oElem){
	var sStr = '';
	if (typeof(oElem) == 'string' || typeof(oElem) == 'number')
	{
		sStr = oElem;
	}
	else
	{
		var sValue = '';
		for (var oItem in oElem)
		{
			sValue = oElem[oItem];
			if (typeof(oElem) == 'innerHTML' || typeof(oElem) == 'outerHTML')
			{
				sValue = sValue.replace(/</g, '&lt;').replace(/>/g, '&gt;');
			}
			sStr += 'obj.' + oItem + ' = ' + sValue + '\n';
		}
	}
	return sStr;
}

function debug(data){
	if (document.body){
		var oItemId = 'js-debug',
			oItem = $(oItemId);
		if (!oItem){
			oItem = document.createElement('DIV');
			oItem.setAttribute('id', oItemId);
			oItem.style.left = '0';
			oItem.style.top = '90%';
			oItem.style.backgroundColor = 'yellow';
			oItem.style.color = '#000';
			oItem.style.position = 'absolute';
			oItem.style.zIndex = '100';
			document.body.insertBefore(oItem, document.body.firstChild);
		}
		oItem.innerHTML = '<pre style="margin:0;">' + var_dump(data) + '</pre>';
		oItem = null;
	} else {
		alert(var_dump(data));
	}
}

var CTimer = {
	start : function()
	{
		var date = new Date();
		this.time = 0;
		this.timer = date.getTime();
	},
	stop : function()
	{
		var date = new Date();
		this.time = date.getTime() - this.timer;
		this.timer = 0;
		return this.getTime();
	},
	getTime : function()
	{
		return this.time / 1000;
	}
};

/****************************************************************************
 ** Основные функции
 ****************************************************************************/

// Вызывается при загрузки страницы
function fWindowLoad()
{
	chat1_container = $('chat1');
	chat1_parent_container = $('chat1-container');

	chat2_container = $('chat2');
	chat2_parent_container = $('chat2-container');

	chat_list_container = $('chat-list');
	chat_list_parent_container = $('chat-list-container');

	tz = $('tz');
	tz_container = $('tz-flash');
	tz_parent_container = $('tz-flash-container');

	cmd_container = $('cmd');
	cmd_form = $('F1');

	if (!(chat1_container || chat2_container || chat_list_container || cmd_form || tz || tz_container)) return false;

	tz.focus();

	rt();
	LoadConf();

	tz_parent_container_height = tz_container.clientHeight;
	cmd_container_height = cmd_container.clientHeight;

	if (IE)
	{
		cmd_container_height += 4;
	}

	fSetTZPosition();

	// Устанавливаем высоту и ширину контейнеров чата
	fSetContainerPosition();

	// Устанавливаем обработчики ресайза для контейнеров
	fSetContainerResize();

	CEvent.add(window, 'resize', fSetContainerPosition);

	doStop = false;

	
	/* мое */
	CEvent.add(document, 'mousedown',fMouseDownEventSelect);
	

	// фикс бага эксплоререа
	
	 o = document.getElementById('tz');

	  document.onkeydown = function(event) {
		try {
			if (event.keyCode == 9 || event.keyCode == 9)
			{
				
				if (o)
				{
					o.focus();
				}

				return false;
			}

			return true;
		} catch (e) {
			
		}
	  }
	  
	 fullScreen(true);
	
}
// фикс бага с фокусом в ие

  
function fMouseDownEventSelect(evt) {
	/* мое */
	/*
	CEvent.add(document, 'mousedown', fResizeChat1MouseDownHandler);
	CEvent.add(document, 'mousedown', fResizeChat2MouseDownHandler);
	
	CEvent.add(document, 'mousedown', fResizeHChatListMouseDownHandler);
	CEvent.add(document, 'mousedown', fResizeVChatListMouseDownHandler);
	*/
	
	var x = evt.clientX;
	var y = evt.clientY;
	var  enablechat2resize = (chat2_parent_container.style.display != 'none');
	
	if (y > (chat2_parent_container.offsetTop) && y < (chat2_parent_container.offsetTop + 4) && enablechat2resize)
	{
	
		//chat_list_parent_container_height = chat_list_parent_container.offsetHeight;
		fResizeChat2MouseDownHandler(y);
		
	}
	else if (y > chat1_parent_container.offsetTop  && y < chat1_parent_container.offsetTop + 5 )
	{
		document.body.style.cursor = 's-resize';
		fResizeChat1MouseDownHandler(y);
	}
	

	else if (x > chat_list_parent_container.offsetLeft-2 && x < chat_list_parent_container.offsetLeft + 4)
	{
		document.body.style.cursor = 'e-resize';
		fResizeHChatListMouseDownHandler();
		
	}
	

	else if (y > chat_list_parent_container.offsetTop-2 && y < chat_list_parent_container.offsetTop + 2)
	{
		document.body.style.cursor = 's-resize';
		//chat_list_parent_container_height = chat_list_parent_container.offsetHeight;
		fResizeVChatListMouseDownHandler();
		
	}
	
	else
	{
		document.body.style.cursor = '';

	}
	
}

// Отключаем обработчики ресайза
function fResizeDeinitHandler()
{
	fDeinitResizeMouseMoveHandlers();
	fDeinitResizeMouseDownHandlers();

	SetCookie('chatListWidth', chat_list_parent_container.offsetWidth);

	if (chat2_parent_container.style.display == 'none')
	{
		winheight = 0;
	}
	else
	{
		winheight = chat1_parent_container.offsetHeight * 100 / chat_list_parent_container.offsetHeight;
	}

	SetCookie('winheight', winheight);

	document.body.style.cursor = '';
	enableOnSelect();

	CEvent.remove(document, 'mouseup', fResizeDeinitHandler);
	
	
	setChatScroll(chat1_container);
	setChatScroll(chat2_container);
}

function fDeinitResizeMouseDownHandlers()
{
	//CEvent.remove(document, 'mousedown', fResizeChat1MouseDownHandler);
	//CEvent.remove(document, 'mousedown', fResizeChat2MouseDownHandler);
	//CEvent.remove(document, 'mousedown', fResizeVChatListMouseDownHandler);
	//CEvent.remove(document, 'mousedown', fResizeHChatListMouseDownHandler);
	
}

function fDeinitResizeMouseMoveHandlers()
{
	CEvent.remove(document, 'mousemove', fResizeChat1Handler);
	CEvent.remove(document, 'mousemove', fResizeChat2Handler);
	CEvent.remove(document, 'mousemove', fResizeVChatListHandler);
	CEvent.remove(document, 'mousemove', fResizeHChatListHandler);
}

// Устанавливаем обработчики ресайза
function fSetContainerResize()
{
	//CEvent.add(tz_parent_container, 'mousemove', function(){document.body.style.cursor = '';});
	//CEvent.add(chat1_parent_container, 'mousemove', fResizeInitChat1Handler);
	//CEvent.add(chat2_parent_container, 'mousemove', fResizeInitChat2Handler);
	//CEvent.add(chat_list_parent_container, 'mousemove', fResizeInitChatListHandler);
}

// Устанавливаем высоту и ширину контейнеров чата
function fSetContainerPosition()
{
	fClearContainerPosition();

//	fSetTZPosition();
	fSetChatListPosition();
	fSetChat1Position();
	fSetChat2Position();

	updateSize();
}

function updateSize() {
	if(isFullScreen){
		var o = getFlashElement();
		var docWidth = document.body.clientWidth;
		var docHeight = document.body.clientHeight;
		
		tz_container.style.width = docWidth;
		o.width = docWidth;
		tz_container.style.height = docHeight;
		o.height = docHeight;
	} else {
		var docWidth = document.body.clientWidth;
		tz_container.style.width = docWidth;
	}
}


// Для изменения высоты, ширины переводим пиксили в проценты
function fClearContainerPosition()
{
	/*
	var body_height = document.body.clientHeight;

	var height = (chat_list_parent_container.offsetHeight / body_height * 100);
	chat_list_parent_container.style.height = height + '%';
	chat_list_container.style.height = height + '%';

	var height = (chat1_parent_container.offsetHeight / body_height * 100);
	chat1_parent_container.style.height = height + '%';
	chat1_container.style.height = height + '%';

	var height = (chat1_parent_container.offsetHeight / body_height * 100);
	chat2_parent_container.style.height = height + '%';
	chat2_container.style.height = height + '%';
	
	setChatScroll(chat1_container);
	setChatScroll(chat2_container);
	*/
}

// Устанавливаем размеры для контейнера с флэшкой
function fSetTZPosition()
{
	var height = GetCookie('topFrameRatio') || 1;
	
	if (height)
	{
		iY = Math.floor(min_tz_height * height);

		tz_parent_container.style.height = iY + 'px';
		tz_parent_container_height = iY;
		resizeTz();
		fSetContainerPosition();

	}


}

// Устанавливаем размеры для контейнера со списком пользователей
function fSetChatListPosition()
{

	var tz_container_height = tz_parent_container_height;
	var body_height = document.body.offsetHeight;

	var width = GetCookie('chatListWidth') || min_chat_list_container_width;
	if (width<min_chat_list_container_width) width=min_chat_list_container_width;
	chat_list_parent_container.style.width = width + 'px';
	chat_list_container.style.width = width + 'px';

	var height = (body_height - tz_container_height - cmd_container_height);
	if (height<10) height=10;
	chat_list_parent_container.style.height = height + 'px';
	chat_list_container.style.height = height + 'px';

	chat_list_parent_container_width = width;
	chat_list_parent_container_height = height;
}

// Устанавливаем размеры для контейнера с первым окном чата
function fSetChat1Position()
{
	var width = (document.body.clientWidth - chat_list_parent_container_width - 2);

	if ((document.body.offsetWidth - 20) <= tz.offsetWidth)
	{
		width = tz.offsetWidth - chat_list_parent_container_width;
	}

	chat1_parent_container.style.width = width + 'px';
	chat1_container.style.width = width + 'px';

	var height = chat_list_parent_container_height / 2;
	if (winheight)
	{
		height = winheight / 100 * chat_list_parent_container_height;
	}

	height = Math.ceil(height);

	chat1_parent_container.style.height = height + 'px';
	chat1_container.style.height = 100 + '%';

	chat1_parent_container_width = width;
	chat1_parent_container_height = height;
	
	setChatScroll(chat1_container);
	
}

// Устанавливаем размеры для контейнера со вторым окном чата
function fSetChat2Position()
{
//	var height = chat_list_parent_container_height - chat1_parent_container.offsetHeight;
	var height = chat_list_parent_container_height - chat1_parent_container_height;

	if (height == 0 || split_win==0)
	{
		chat1_parent_container.style.height = (chat_list_parent_container_height - 1) + 'px';
		chat2_parent_container.style.display = 'none';
	}
	else
	{
		chat2_parent_container.style.display = '';
	}

	chat2_parent_container.style.height = height + 'px';
	chat2_container.style.height = 100 + '%';

	var width = chat1_parent_container_width;

	chat2_parent_container.style.width = width + 'px';
	chat2_container.style.width = width + 'px';
	
	setChatScroll(chat2_container);
}

// �?зменяем размер флэша
function resizeTz()
{

	var sc = document.body.offsetWidth / 1004;

	if (tz_parent_container_height / min_tz_height < sc)
	{
		sc = tz_parent_container_height / min_tz_height;
	}



	//sc = Math.round(sc * 40) / 40;

	if (sc <= 1.03)
	{
		sc = 1;
	}
	else if (sc >= 1.25 && sc <= 1.28)
	{
		sc = 1.25;
	}
	else if (sc >= 1.5 && sc <= 1.53)
	{
		sc = 1.5;
	}
	else if (sc >= 2 && sc <= 2.03)
	{
		sc = 2;
	}
	
	
	SetCookie("topFrameRatio", sc);


	var o = getFlashElement();
	o.width = 1004 * sc;
	o.height = min_tz_height * sc;
	
	
	tz_container.style.height = o.height;
	
	if (o.resizeStage) o.resizeStage(o.width);
}

// Проверяем координаты курсора
function fResizeInitChat1Handler(evt)
{

/*
	var y = evt.clientY;

	if (y < chat1_parent_container.offsetTop + 5)
	{
		document.body.style.cursor = 's-resize';
		CEvent.add(document, 'mousedown', fResizeChat1MouseDownHandler);
	}
	else
	{
		document.body.style.cursor = '';
		fDeinitResizeMouseDownHandlers();
	}
	*/
}

// Присваиваем обработчик mousemove
function fResizeChat1MouseDownHandler(y)
{
	iAlign = y - chat1_parent_container.offsetTop + 1;

	disableOnSelect();
	CEvent.add(document, 'mouseup', fResizeDeinitHandler);
	CEvent.add(document, 'mousemove', fResizeChat1Handler);
}

// �?зменяем размеры контейнеров
function fResizeChat1Handler(evt)
{

	document.body.style.cursor = 's-resize';

	var iY = evt.clientY - iAlign;
	if (iY < min_tz_height - 1 )
	{
		iY = min_tz_height;

		if (IE)
		{

			tz_parent_container.style.height = iY + 'px';
			tz_parent_container_height = iY;
			resizeTz();
			fResizeDeinitHandler();
			fSetContainerPosition();
			return false;
		}
	}

	
	

	if (iY > document.body.offsetHeight-min_chat_container_height)
	{

		tz_parent_container.style.height = (document.body.offsetHeight-min_chat_container_height) + 'px';
		tz_parent_container_height = document.body.offsetHeight-min_chat_container_height;
		return;
	}

	tz_parent_container.style.height = iY + 'px';
	tz_parent_container_height = iY;

	resizeTz();
	fSetContainerPosition();
}

// Проверяем координаты курсора
function fResizeInitChat2Handler(evt)
{
	/*
	var x = evt.clientX;
	var y = evt.clientY;

	if (y > chat2_parent_container.offsetTop && y < chat2_parent_container.offsetTop + 5)
	{
		document.body.style.cursor = 's-resize';
		chat_list_parent_container_height = chat_list_parent_container.offsetHeight;
CEvent.add(document, 'mousedown', fResizeChat2MouseDownHandler);
		
	}
	else
	{
		document.body.style.cursor = '';
		fDeinitResizeMouseDownHandlers();
	}
	*/
}

// Присваиваем обработчик mousemove
function fResizeChat2MouseDownHandler(y)
{
	onResizeSavedScroll = chat1_container.scrollTop;
	iAlign = y - chat2_parent_container.offsetTop;

	disableOnSelect();
	CEvent.add(document, 'mouseup', fResizeDeinitHandler);
	CEvent.add(document, 'mousemove', fResizeChat2Handler);
}

// �?зменяем размеры контейнеров
function fResizeChat2Handler(evt)
{
	document.body.style.cursor = 's-resize';

	var iY = evt.clientY, minHeight = 10;

	var chat1height = (iY - tz_container.offsetHeight - iAlign);

	if (chat1height > minHeight && chat1height < chat_list_parent_container_height - minHeight)
	{

		chat1_parent_container.style.height = chat1height + 'px';
		chat1_container.style.height = 100 + '%';
		chat1_container.scrollTop = onResizeSavedScroll;
		temp_chat1_parent_container_height = chat1height;
		

//		SetCookie('winheight', chat1height * 100 / chat_list_parent_container_height);
	}

	var chat2height = (chat_list_parent_container_height - chat1height);

	if (chat2height > minHeight && chat2height < chat_list_parent_container_height - minHeight)
	{
		chat2_parent_container.style.height = chat2height + 'px';
		chat2_container.style.height = 100 + '%';
	}
	
}

// Проверяем координаты курсора
function fResizeInitChatListHandler(evt)
{
/*
	var iX = evt.clientX;
	var iY = evt.clientY;

	if (iX > chat_list_parent_container.offsetLeft && iX < chat_list_parent_container.offsetLeft + 5)
	{
		document.body.style.cursor = 'e-resize';
		CEvent.add(document, 'mousedown', fResizeHChatListMouseDownHandler);
		return false;
	}
	else
	{
		document.body.style.cursor = '';
		fDeinitResizeMouseDownHandlers();
	}

	if (iY > chat_list_parent_container.offsetTop && iY < chat_list_parent_container.offsetTop + 5)
	{
		document.body.style.cursor = 's-resize';
		chat_list_parent_container_height = chat_list_parent_container.offsetHeight;
		CEvent.add(document, 'mousedown', fResizeVChatListMouseDownHandler);
		return false;
	}
	else
	{
		document.body.style.cursor = '';
		fDeinitResizeMouseDownHandlers();
	}
	*/
}

// Присваиваем обработчик mousemove
function fResizeHChatListMouseDownHandler(evt)
{
	
	disableOnSelect();
	CEvent.add(document, 'mouseup', fResizeDeinitHandler);
	CEvent.add(document, 'mousemove', fResizeHChatListHandler);
}

// �?зменяем размеры контейнеров
function fResizeHChatListHandler(evt)
{
	document.body.style.cursor = 'e-resize';

	var iX = evt.clientX;
	if (iX < min_chat_list_parent_container_position)
	{
		return false;
	}

	var width = (document.body.clientWidth - iX);


	if (width < min_chat_list_parent_container_width)
	{
		return false;
	}

	chat_list_parent_container.style.width = width + 'px';
	chat_list_container.style.width = width + 'px';

//	SetCookie('chatListWidth', width);

	var width = (document.body.clientWidth - chat_list_parent_container.offsetWidth);

	chat1_parent_container.style.width = width + 'px';
	chat2_parent_container.style.width = width + 'px';

	if (IE)
	{
		width -= 1;
	}

	chat1_container.style.width = width + 'px';
	chat2_container.style.width = width + 'px';

	setChatScroll(chat1_container);
	setChatScroll(chat2_container);
}

// Присваиваем обработчик mousemove
function fResizeVChatListMouseDownHandler(evt)
{
	disableOnSelect();
	CEvent.add(document, 'mouseup', fResizeDeinitHandler);
	CEvent.add(document, 'mousemove', fResizeVChatListHandler);
}

// �?зменяем размеры контейнеров
function fResizeVChatListHandler(evt)
{
	document.body.style.cursor = 's-resize';

	var iY = evt.clientY;

	if (iY < min_tz_height - 1)
	{
		iY = min_tz_height;

		if (IE)
		{
			tz_parent_container.style.height = iY + 'px';
			tz_parent_container_height = iY;
			
			fResizeDeinitHandler();
			fSetContainerPosition();
			resizeTz();
			return false;
		}
	}

	tz_parent_container.style.height = iY + 'px';
	tz_parent_container_height = iY;

	resizeTz();

	fSetContainerPosition();
}

/****************************************************************************/

function setLoginPsswFromCookies()
{
	var login = GetCookie('lgn');
	var password = GetCookie('pssw');

	if (login.length && password.length)
	{
		reg_url = {};
		reg_url['login'] = login;
		reg_url['password'] = password;
		document.cookie = 'lgn=; path=/; domain=.timezero.'+lang+'; expires=Tue, 01-Jan-1970 00:03:00 GMT';
		document.cookie = 'pssw=; path=/; domain=.timezero.'+lang+'; expires=Tue, 01-Jan-1970 00:03:00 GMT';
	}
}

setLoginPsswFromCookies();

/*
var classes = {};

function isClass(cl)
{
	cl = cl.toLowerCase();
	if (classes[cl] == undefined){
		var i=0, j, c = 0, ch, css='';
		classes[cl] = false;
		if (!IE) {
			try { document.styleSheets[0].cssRules.cssRules; }
			catch (e) { return false; }
			for (i=0; i<document.styleSheets[0].cssRules.length; i++)
				css += window.frames[1].document.styleSheets[0].cssRules[i].cssText.toLowerCase()+'\n';
		} else {
			css = document.styleSheets[0].cssText.toLowerCase();
		}
		while ((i = css.indexOf("."+cl, c))>0) {
			ch = css.charAt(i+1+cl.length);
			if (ch==" " || ch=="\n" || ch=="\r" || ch=="\t" || ch=="{") {
				classes[cl] = true;
				break;
			}
			c = c+1+cl.length;
		}
	}
	return classes[cl];
}
*/

var clans = new Object();		// хэш клановых значков

// хэш картинок,
var img_hash = new Object();

function isLocalClan(cl){
	if (!clans[cl]) {
		
		if (img_hash[cl]) {
			
			if (img_hash[cl].complete && img_hash[cl].width==0) clans[cl] = 1;
		} else {
			var img = new Image();
			img.onload = function() { 
				clans[this.clan] = 2; 
			};
			img.onabort = function() {
				clans[this.clan] = 3;
			};
			img.onerror = function() {
				clans[this.clan] = 1; 
			};
			img.clan = cl;
			img.src = "i/clans/"+escape(cl)+".gif"
			img_hash[cl] = img;
		}
		return false;
	} else {
		if (img_hash[cl]) delete img_hash[cl];
		return Boolean(clans[cl]==2);
	}
}

function set_vip(s) {
	isVip = (s==1);
	if (isVip ) {
		light_lamp(1);
	} else {
		light_lamp(0);
	}
}

function sLogin(login, show_login, cls)
{
	return '<a href="#"'+(cls?' class="'+cls+'"':'')+' onclick="return AddTo(\''+login+'\')" ondblclick="return AddTo(\''+login+'\',1)" textlink="'+login+'">'+(show_login?show_login:'['+login+']')+'</a>';
}

function AddTo(login, only_private, only_to) {
	setFocus();

	var t1 = 'to [' + login + '] ';
	var t2 = 'private [' + login + '] ';
	var i;
	var s = '' + cmd_form.text.value;

	if ((i = s.indexOf(t1)) >= 0)
	{
		if (!only_to) s = s.substring(0, i) + t2 + s.substring(i + t1.length);
	}
	else if ((i = s.indexOf(t2)) >= 0)
	{
		if (!only_private) s = s.substring(0, i) + t1 + s.substring(i + t2.length);
	}
	else
	{
		s = (only_private) ? t2 + s : t1 + s;
	}

	if (s.length > max_message_length) s = s.substring(0, max_message_length);

	cmd_form.text.value = s;

	return false;
}

function TrimMessageId(txt) {
	var message = txt;
	var msgID = txt.substr(0,8);
	if (Number('0x'+msgID)>0) {
		message = message.substr(8);
	} 
	return message;
}

function AddText(s) {
	setFocus();

	var tmp = cmd_form.text.value + s;

	if (tmp.length > max_message_length) tmp = tmp.substring(0, max_message_length);

	cmd_form.text.value = tmp;
}

function Complain(s) {	
	if (s.length>0) if (getFlashElement().complainMessage)	getFlashElement().complainMessage(s);
}

// Показать инфу о персе
function Info(login) {
	getFlashElement().getUserInfo(login);
	if (IE) getFlashElement().focus();
	return false;
}

// Просмотр боя
function BattleLook(id)
{
	getFlashElement().lookBattle(id);
	if (IE) getFlashElement().focus();
	return false;
}

// Присоединение к групповой заявке
function BattleJoin(side, bid, bloodbtl)
{
	getFlashElement().joinBattle(bid,side,bloodbtl);
	if (IE) getFlashElement().focus();
	return false;
}
// Находится ли в черном списке
function InIgnore(login) {
	return ignore["fv_"+login.toLowerCase()];
}

// Добавить в черный список
function Ignore(login)
{
	//освободим вилли aka Constructor
	ignore["fv_"+login.toLowerCase()]=true;
	S("  "+sLogin(login)+" "+mes_ignore,15,1);
	// если клиент в комнате обновим контакт лист
	for (var i=0; i<logins.length; i++) if(logins[i].login==login) {
		resetlist=true;
		CreateList();
		return;
	}
}

// Удалить из черного списка
function UnIgnore(login)
{
	delete ignore["fv_"+login.toLowerCase()];
	// если клиент в комнате обновим контакт лист
	for (var i=0; i<logins.length; i++) if(logins[i].login==login) {
		resetlist=true;
		CreateList();
		return;
	}
}

function isDealer(login) {
	for (var i in adealers) {
		if (login == adealers[i]) return true;
	}
	return false;
}

// Запуск чата
function StartChat(s, login, ses)
{
	chatOn = true;
	
	if (cmd_form.style.visibility == 'visible')		// такое возможно, только если чат отвалился и происходит переподключение
	{
		if (connectionLost)							// только после потери соединения на третий раз получаем сообщение, что восстановили успешно
		{
			S('  ' + mes_chat_reconnected, 15, 1);
			connectionLost = false;
		}

		return;
	}

/*
	window.onhashchange = function(){alert('onhashchange');};
	window.onfocus = function(){alert('onfocus');};
	window.onblur = function(){alert('onblur');};
	window.onload = function(){alert('onload');};
	window.onunload = function(){alert('onunload');};
*/

//	CEvent.add(tz_container, 'keydown', gKey);
	CEvent.add(cmd_form.text, 'keydown', gKey2);
	CEvent.add(window, 'unload', doExit);

	cmd_form.style.visibility = 'visible';

	window.login.src = 'http://www.timezero.ru/cgi-bin/login.pl?login=' + escape(login) + '&ses=' + String(ses) + '&srv=' + s;
	user = login.toLowerCase();
	cache = []; // очистим кэш привата
	ignore = {}; // очистим черный список
	away_state = false;
	away_text = GetCookie('away');
	//away_text = GetCookie("away_"+login.toLowerCase());
	if (!away_text) away_text = mes_away_text;
	word_filter_text = GetCookie('word_filter') || '';
	word_filter_array = SplitWordFilter(word_filter_text);
	ClearChat();
	
}
// Остановка чата
function OnStopChat(n)
{
	/*
	* n == 0 — выход из игры
	* n  == 1 — остановка чата пользователем
	* n == 2 — чат отвалился
	*/
	if (n==0 || !n) {
		StopGame();
	} else if (n==1) {
		StopChat();
	} else if (n==2) {
		S("  "+mes_chat_disconnected, 15, 1);
		connectionLost=true;
	}
}
function StopChat()
{
	resetlist = false;
	ClearChat();
	clearTimeout(id_list);
	chatOn = false;
}

function StopGame()
{
	isVip = false;

	RoomName = '';

	if (cmd_form) cmd_form.style.visibility = 'hidden';

	reChatCmd();
	StopChat();
	closeMenu();
}

function CmdOn(s)
{
	for (var i=0; i<chat_cmd.length; i++) if (chat_cmd[i].indexOf(s)>0 && chat_cmd[i].charAt(0)=="#") {
		chat_cmd[i] = chat_cmd[i].substring(1);
	}
}

function updateCmd(list)
{
	reChatCmd();
	var i, j;
	for (i=0; i<list.length; i++) {
		for (j=0; j<chat_cmd.length; j++) if (chat_cmd[j].indexOf(list[i])>0 && chat_cmd[j].charAt(0)=="#") {
			chat_cmd[j] = chat_cmd[j].substring(1);
		}
	}
}

function EscPvtTo(txt)
{
	var i=0,j;

	txt =  txt.replace(/&amp;/g, '&');
	//while ((j=txt.indexOf("\\\\", i))>0) { txt = txt.substring(0, j)+"\\"+txt.substring(j+2); i=j }
	txt = txt.split(" to [").join(" to  [").split(" private [").join(" private  [");
	
	while (1) {
		i = txt.indexOf('<');
		j = txt.indexOf('>');
		if (i<0 || j<i) { return txt; }
		else {
			txt = txt.substring(0, i)+txt.substring(j+1);
		}
	}
	
}

function SplitWordFilter(s)
{
	if (!s) return new Array();
	var tmp = s.split(",");
	var out = [];
	for(var i in tmp) {
		var s = String(tmp[i]);
		while (s.charAt(0)==" ") s = s.substring(1,s.length);
		while (s.charAt(s.length-1)==" ") s = s.substring(0,s.length-1);
		if (s != '') out[out.length] = s.toLowerCase();
	}
	return out;
}



var adealers = [];
function set_dealerlist(dealers)
{
	adealers = dealers.split(",");
	for (var i in adealers) adealers[i] = adealers[i].toLowerCase();
	
}

var alinks = [];
function set_dealerlinks(sites)
{
	alinks = sites.split(",");
	alinks[alinks.length] = 'timezero.ru';
}

function fullScreen(flag) {
	if (isFullScreen == flag) return;
	
	isFullScreen = flag;
	if(flag) {

		iY = document.body.clientHeight;

		tz_parent_container.style.height = iY + 'px';
		tz_parent_container_height = iY;
		fSetContainerPosition();
	}
	else {
		fSetTZPosition();
		resizeTz();
	}
}

function restartClient() {
	window.top.location.reload();
}

// Добавить строку в чат
function S(txt, color, always, gs,html)
{
	if (!chatOn) return;

	if (gs) {
		chat2_container.innerHTML +=  txt ;
		return;
	}

	//S(txt, color, always, true);
	/*
	for (var i in cache)
	{
		if (txt == cache[i].txt)
		{
			return false;
		}
	}
	*/
	var messageID = txt.substr(0,8);
	if (txt.substr(8,1)==":" && parseInt(messageID,16)>0) {
		txt = txt.substr(9);
	} else {
		messageID="";
	}
	
	if (color == null || color < 0 || color > max_chat_colors)
	{
		color = 0;
	}

	var s = '';
	var i, j, c;
	var to_me = false;			// адресовано мне
	var to_clan = false;		// адресовано моему клану/группе
	var to_radio = false;		// радио
	var to_alliance = false;	// альянс
	var FromM = '', from = '';	// от кого строка
	var from_me = false;		// я писал эту строку
	var toCache = false;		// попадет ли в кеш
	var txt1 = txt;
	var snd = false;			// издавать ли звук привата
	var isPrivate=false         //private me
	var to_group = false;       //to group
	var user2, user2L;
	var tmp, c_start = 0;

//	var txt2 = txt.split("'").join("\\'").split("\\").join("\\\\").split("&").join("&amp;").split("\"").join("&quot;");

	
		var txt2 = txt.replace(/'/g, "\\'").replace(/\\/g, "\\\\").replace(/&/g, '&amp;').replace(/\"/g, '&quot;');
	
	
	i = txt.indexOf(" ");

	if (i>0 && txt.charAt(i+1) == "[" && (j=txt.indexOf("]")) > 0)
	{
		FromM = txt.substring(i+2, j);
		from = FromM.toLowerCase();
		from_me = (from == user);
		tmp = sLogin(FromM, txt.substring(i+1,j+1));
		if (FromM.indexOf(':') < 0)
		{
			txt = txt.substring(0, i+1)+tmp+txt.substring(j+1);
		}
		c_start = i+1 + tmp.length;
	}

	if (html) {
		var txt3 = txt.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>');
	}

	if (!Number(always)!=1 && (128 & chat_filter)) 	// Фильтр выбранных слов
	{
		c = c_start;
		var c2 = c;

		while (c2>=0)
		{
			i = txt.indexOf(" to [", c);
			j = txt.indexOf(" private [", c);
			if (i<0) c2 = j;
			else if (j<0) c2 = i;
			else c2 = Math.max(i, j);
			if (c2<0) tmp = txt.substring(c);
			else tmp = txt.substring(c, c2);
			tmp = tmp.toLowerCase();
			if (tmp.length>0)
			{
				for (i in word_filter_array)
				{
					if (tmp.indexOf(word_filter_array[i]) >= 0) return;
				}
			}
			if (c2>=0) c = txt.indexOf("]", c2)+1;
		}
	}
	c = c_start;
	while ((i=txt.indexOf(" to [", c))>0 && (j=txt.indexOf("]", i))>0) {
		user2 = txt.substring(i+5, j);
		user2L = user2.toLowerCase();
		c = j+13;
		if (user2.length>16) continue;
		if (user2.indexOf("'")<0 && user2.indexOf("$")<0 && user2.indexOf('"')<0 && user2.indexOf(':')<0) {
			if (user2L == user) to_me=true
			txt = txt.substring(0, i+1)+sLogin(user2L==user?FromM:user2, txt.substring(i+1,j+1))+txt.substring(j+1);
		}
	}
	c = c_start;
	while ((i=txt.indexOf(" private [", c))>0 && (j=txt.indexOf("]", i))>0) {
		user2 = txt.substring(i+10, j);
		user2L = user2.toLowerCase();
		c = j+21;

		if (user2.length>16) continue;
		if (from_me && cache_my_private) toCache = true; //Если приват от меня
		if (user2.indexOf("'")<0 && user2.indexOf("$")<0 && user2.indexOf('"')<0 && user2.indexOf(':')<0) {
			isPrivate = true;
			if (user2L == user) { // приват мне
				to_me=true;
				if (!from_me && cache_my_private) toCache = true;
				if (!always) snd = true; // издать звук
			} else if (user2L == "group."+me.grp || user2L == "clan" || user2L == "radio" || user2L == "alliance" ) { // приват моему клану/группе
				if (user2L == "radio") to_radio=true;
				else if (user2L == "alliance") to_alliance=true;
				else if  (user2L == "clan") to_clan=true;
				else to_group=true;
				if (!from_me && cache_my_private) toCache = true;
			} else if (user2L.indexOf("group.")>-1) {
				to_group=true;
			}
			txt = txt.substring(0, i+1)+'<a href="#" class="#" onclick="return AddTo(\''+(user2L==user?FromM:user2)+'\',1)">'+txt.substring(i+1,j+1)+'</a>'+txt.substring(j+1);
		}
	}

	if (!always)
	{
		var mes = 0;
		if (from == '') mes |= 1;														// Не показывать системные сообщения
		if (from != '' && !to_alliance && !to_me && !to_clan && !to_radio) mes |= 2;	// Не показывать общие сообщения
		if (to_clan) mes |= 4;															// Не показывать групповые сообщения
		if (to_me || from_me) mes |= 8													// Не показывать сообщения мои / для меня
		if (to_radio) mes |= 16;														// Не показывать радио сообщения
		if (to_alliance) mes |= 32;														// Не показывать альянс
		if (to_group) mes |= 64;														// Не показывать групповые сообщения

		if (!(mes & chat_filter))
			return;
	}
	
	var dealerPrivate = isDealer(FromM.toLowerCase()) && (to_me || from_me);

	
	if (Number(always)==1) {
		// показывать всегда
	} else {
		
		if (InIgnore(FromM) && !dealerPrivate) return;			// ничего не делаем если отправитель в черном списке
	}
	
/*
	c = 0;
	var cl = "p";
	if (to_clan && isClass("c")) cl = "c";
	else if (to_radio && isClass("k")) cl = "k";
	else if (to_alliance && isClass("a")) cl = "a";
	else if (to_group && isClass("a")) cl = "g";
	while ((i=txt.indexOf('class="#"', c))>0) {
		txt = txt.substring(0, i+7)+cl+txt.substring(i+8);
		c = i+9;
	}
	c=0;
*/
	c = 0;
	var cl = 'p';
	if (to_clan) cl = 'c';
	else if (to_radio) cl = 'k';
	else if (to_alliance) cl = 'a';
	else if (to_group) cl = 'g';
	while ((i=txt.indexOf('class="#"', c)) > 0)
	{
		txt = txt.substring(0, i + 7) + cl + txt.substring(i + 8);
		c = i + 9;
	}
	c = 0;

	for (i=0; i < sm.length; i+=4) {
		while ((j=txt.indexOf(':'+sm[i]+':'))>=0)
		{
			txt = txt.substring(0, j)+ '<img border="0" src="i/smile/'+sm[i]+'.gif" width="'+sm[i+1]+'" height="'+sm[i+2]+'" style="cursor:pointer;" onclick="sml(\''+sm[i]+'\')" />'+txt.substring(j+sm[i].length+2);

//			txt = txt.substring(0, j)+ '<span style="text-align:left;margin:0;padding:0;border:1px solid #000;background:url(i/smile/'+sm[i]+'.gif);width:'+sm[i+1]+'px;height:'+sm[i+2]+'px;cursor:pointer;" onclick="sml(\''+sm[i]+'\')"></span>'+txt.substring(j+sm[i].length+2);

			if (++c >= maxsmiles) break;
		}
		if (c>=maxsmiles) break;
	}
	if ((i=txt.indexOf("http://"))>0) {
		j = txt.indexOf(" ", i);
		c=txt.indexOf(",", i);
		if (j<0 || (c>0 && c<j)) j=c;
		c=txt.indexOf("<", i);
		if (j<0 || (c>0 && c<j)) j=c;
		c=txt.indexOf(">", i);
		if (j<0 || (c>0 && c<j)) j=c;
		if (j<0) j=txt.length;
		if (j>i) {
			var link_s = txt.substring(i, j);
			var b = false;
			for (c=0; c<alinks.length && !b; c++) {
				if (link_s.indexOf(alinks[c])==7 || link_s.indexOf("www."+alinks[c])==7) {
					b = true;
				}
			}
			if (b) txt = txt.substring(0, i)+ '<a href="'+link_s+'" target="_blank">'+link_s+'</a>'+txt.substring(j);
		}
	}

	i = txt.indexOf(" ");

	s += '<font class="'+(to_me?'date2':'date')+'" id="'+messageID+txt2+'"  onclick="AddText(TrimMessageId(EscPvtTo(this.id)))">'+txt.substring(0, i)+'</font> <span class="basesize"><font class="clr'+color+'">'+ (html? txt3.substring(i+1) : txt.substring(i+1))+'</font></span><br />';


	lastMSGfromMe=from_me;
	if (s.length>0) {
		if (snd) getFlashElement().playSound('private'); // звук
		if (!always && to_me && away_state) {
			var now_time = (new Date()).getTime();
			if (now_time>away_offts && (!away_stamp[from] || now_time>away_stamp[from])) {
				tmp="private ["+FromM+"] "+away_text+((away_flip=1-away_flip)?" ":"");
				if (tmp.length>240) tmp = tmp.substring(0, 240);
				subm(tmp);
				away_stamp[from] = now_time+60000;
			}
		}
		if (toCache) AddCache(txt1, color); // только теперь добавим в кеш

		var option1=(((isPrivate && from_me || to_me) && 8&split_win) )
		var option2=(to_clan && 4&split_win);
		var option3=(to_radio && 16&split_win);
		var option4=(to_alliance && 32&split_win);
		var option5=(to_group && 64&split_win);
		var option6=(from=="" && 1&split_win) ;
		var option7=(from!="" && !isPrivate && 2&split_win);
		var option8=!(to_clan || to_radio || to_alliance || to_group) && option1;

		var o = (option8 || option2 || option3 || option4 || option5 || option6|| option7) ? chat2_containerText : chat1_containerText;
		o.push(s);

		writeChat();
	}

}
var chat1_containerText = new Array();
var chat2_containerText = new Array();
var lastWriteCall = 0;
var peopleCountOnLocation = 0;
var writeChatInterval;
var listRefreshTime= 5000;
var lastMSGfromMe = false;

function writeChat() {

	clearInterval(writeChatInterval);
	if (noChatUpdate) {return;}
	var delaytime = 0;
	if (delaytime<0) {delaytime = 0;}
	if (((new Date()).getTime()-lastWriteCall)>=delaytime) {
		writeChat1();
		writeChat2();
		lastWriteCall = (new Date()).getTime();
	} else {
		var time=(delaytime-((new Date()).getTime()-lastWriteCall));
		writeChatInterval = setInterval("writeChat()",time);
	}
}
/*
function getLastChatScroll (oItem)
{
	oItem.lastScrollPos = oItem.scrollTop;
}
function setLastChatScroll (oItem)
{

	if (oItem.lastScrollPos) oItem.scrollTop = oItem.lastScrollPos;
}
*/
function setChatScroll(oItem)
{
/*
	var newDiv = document.createElement("DIV");
	newDiv.innerHTML = "setChatScroll called "+Math.random()*3;
	chat2_container.appendChild(newDiv);
	*/
	if (!noScroll)
	{
		var ratio = (oItem.clientHeight + oItem.scrollTop) / oItem.scrollHeight;

		if (pconf.smartScroll)
		{
			if (ratio > 0.9 || lastMSGfromMe)
			{
				oItem.scrollTop = oItem.scrollHeight;
				//setTimeout(function(){ o.scrollTop = 999999;}, 10);
			}
/*
			else
			{
				o.scrollTop = lastHeight;
				setTimeout(function(){ o.scrollTop = lastHeight;}, 10);
			}
*/
		}
		else
		{
			oItem.scrollTop = oItem.scrollHeight;
			//setTimeout(function(){ o.scrollTop = 999999;}, 10);
		}
	}
}

function writeChat1()
{
	if (chat1_containerText.length == 0)
	{
		return false;
	}

	
	
	var newDiv = document.createElement("FONT");
	newDiv.innerHTML = chat1_containerText.join("");
	chat1_container.appendChild(newDiv);
	
	//chat1_container.innerHTML = 	chat1_container.innerHTML+chat1_containerText.join("");

	chat1_containerText = [];

	setChatScroll(chat1_container);
}

function writeChat2()
{
	if (chat2_containerText.length == 0)
	{
		return false;
	}

	var newDiv = document.createElement("FONT");
	newDiv.innerHTML = chat2_containerText.join("");
	chat2_container.appendChild(newDiv);
	
	//chat2_container.innerHTML = chat2_container.innerHTML+chat2_containerText.join("");

	chat2_containerText = [];

	setChatScroll(chat2_container);
}

function UpdateCache() { // Обновить кеш
	var now_time = (new Date()).getTime();
	var new_cache = new Array();
	for (var i=0; i<cache.length; i++) if (cache[i].time > now_time) new_cache[new_cache.length]=cache[i];
	cache = new_cache;
}

function AddCache(txt, color) { //Добавляет сообщение в кеш
	var to_add = true;
	for (var i=0; i<cache.length; i++) if (cache[i].txt == txt) { to_add = false; break; }
	if (to_add) cache[cache.length]={txt:txt, color:color, time:((new Date).getTime()+timeout*60000)};
}
var werewr = 0;

function getClanIcon(clan) {
return 'http://www.timezero.'+lang+'/i/clans/'+(clan || "blank")+'.gif';
}
// Выводит список народа в online
function CreateList()
{
	
	Y();
	if (!resetlist)	return;
	if (resortlist)
	{
		logins.sort(sortlogins);
		resortlist = false;
	}

	var arr = [];
	var s = '';
	var head = '';
	var bottom = '';
	
	
	
	arr.push(body1 + '<table class="slist_base">');
	arr.push('<tr><td colspan="3" class="room" onclick="AddText(\'' + RoomName +'\')">' + RoomName + '</td></tr>');
	if (away_state) arr.push('<div class="room" onclick="doAwayOff()">' + mes_away_st + '</div>');


	var grp = 0;
	var bid = 0;
	var newbattle=false;
	var n, alt, addon, obj, num_group;

	var ingrp = me.claim > 0 | me.battle > 0;

	
	var count = 0;
	
	
	for (var i=0; i<logins.length; i++)
	{
		obj = logins[i];
		var ri = rankIndex(obj.rank || 0);
		
		if (obj.bid != bid) // новый бой
		{
			bid = obj.bid;
			grp=0;
			newbattle=true;
				// открываем новый бой
		}

		if ((obj.claim||obj.battle) && obj.grp!=grp) // новая группа
		{
			grp = obj.grp;

			if (grp != 0) // открываем новую группу
			{
				num_group = grp;
				if (obj.battle != 0) num_group = '0' + num_group;

				arr.push('<tr>');
				if (newbattle) 
					arr.push('<td class="status'+(newbattle?' newbattle':'')+'"><img class="empty_stat" title="'+(obj.bloodbtl?mes_in_blood_btl:mes_in_btl)+'" alt="'+(obj.bloodbtl?mes_in_blood_btl:mes_in_btl)+'" src="i/status'+(obj.bloodbtl?14:9)+'.gif" style="cursor:pointer;cursor:hand" onclick="BattleLook(' + obj.bid + ')" ></td>');
				else {
					//arr.push('<td class="status"></td>');
					arr.push('<td class="status grp2"><img class="empty_stat" title="'+(obj.bloodbtl?mes_in_blood_btl:mes_in_btl)+'" alt="'+(obj.bloodbtl?mes_in_blood_btl:mes_in_btl)+'" src="i/status'+(obj.bloodbtl?14:9)+'.gif" style="cursor:pointer;cursor:hand" onclick="BattleLook(' + obj.bid + ')" ></td>');
				}				
				var btlformat="";
				if (obj.minlvl>0 || obj.maxlvl>0) btlformat=' <a alt="'+mes_btlformat+'" title="'+mes_btlformat+'">['+obj.minlvl+'-'+obj.maxlvl+']</a>';
				var groupstake="";
				if (obj.stake>0) groupstake=' <a alt="'+mes_group_stakes+'" title="'+mes_group_stakes+'"><img src="i/stakes.png">'+obj.stake+'</a>';
					
				
				
				arr.push('<td colspan="2" class="'+(newbattle?' newbattle':'')+' grp2" >'+ (ingrp ? '' : '<a href="#" onclick="return BattleJoin(\'' + num_group + '\',\'' + bid + '\''+(obj.bloodbtl ? ',\'1\'':'')+')"><img src="i/join.gif" width="17" height="15" alt="' + mes_join_grp + '" title="' + mes_join_grp + '" align="right" /></a>') + '<a href="#" id="group.' + obj.grp + '" onclick="return AddTo(\'group.' + obj.grp + '\',1)">' + mes_grp_num + grp + btlformat + groupstake +'</a></td>');
				//arr.push('<td colspan="2" ></td>');
				
				arr.push('</tr>');
				
				newbattle=false;
			}
		}

		n = 0;
		alt = '';
		addon = '';

		if (obj.claim!=0) { n=4; alt=mes_in_claim }

		else if (obj.casino!=0) { n=7; alt=mes_in_casino }
		
		
		
		if (obj.aggr) {
			if (!n) {
				// делаем иконку фракций
				switch (obj.aggr) {
					case 1:
						n=11;
						alt="Союзник";
						break;
					case 2:
						n=12;
						alt="Конкурент";
						break;
					case 3:
						n=13;
						alt="Враг";
						break;
				}
			}
		}
		
		var cls = getClassByParams(obj);
		if (cls=="bot") n=10;
		
		arr.push('<tr>');
		if (n<10) 
		{
			arr.push('<td class="clans2"><img class="empty_stat" title="'+alt+'" alt="'+alt+'" src="i/status'+n+'.gif" '+addon+' class="imgvalign" ></td>');
		}
		else {
			if (!sort_obj.noshowaggr) {
				arr.push('<td class="clans2"><img class="aggr_stat" title="'+alt+'" alt="'+alt+'" src="i/status'+n+'.gif" '+addon+'></td>');
			} else {
				arr.push('<td></td>');
			}
		}
		
		
		arr.push('<td class="drawleftborder aggr_'+n+'">');
		
		arr.push('<img width="28" height="16" title="'+obj.clan+'" alt="'+obj.clan+'" src="'+getClanIcon(obj.clan)+'"/>');
		
		arr.push('</td>');
		
		arr.push('<td style="width:100%" class="aggr_'+n+'">'+sLogin(obj.login, obj.login,cls  ));
		
		arr.push(' ['+obj.level+']<a href="#" onclick="return Info(\''+obj.login+'\')"><img src="i/i'+obj.pro+(obj.woman?'w':'')+'.gif" width="15" height="15" class="imgvalign" alt="'+prof[obj.pro]+'" title="'+prof[obj.pro]+'" >');
		
		if (!sort_obj.noranks) arr.push('<img src="i/rank/'+(ri+1)+'.gif"  width="15" height="15" class="imgvalign" alt="'+rank[ri]+'" title="'+rank[ri]+'" >');
		
		//		arr.push(' ['+obj.level+']<a href="#" onclick="return Info(\''+obj.login+'\')"><img src="i/i'+obj.pro+(obj.woman?'w':'')+'.gif" width="15" height="15" style="vertical-align:'+valignsetting+'" alt="'+prof[obj.pro]+'" title="'+prof[obj.pro]+'" />');

		// if (!sort_obj.noranks) arr.push('<img src="i/rank/'+(ri+1)+'.gif"  width="15" height="15" style="vertical-align:'+valignsetting+'" alt="'+rank[ri]+'" title="'+rank[ri]+'" />');
		
		
		if (obj.sleep != 0) arr.push('<img src="i/sleep.gif" width="15" height="15" class="imgvalign" title="'+mes_sleep+'" alt="'+mes_sleep+'" />');
		
		arr.push('</a></td></tr>');

		
		
	}
	
	
	arr.push('<tr height="100%"><td></td><td colspan="2" class="drawleftborder"></tr>')

	var l = logins.length;
	peopleCountOnLocation=l;
	var tmpn=(l-40)>0?(l-40):0;
	listRefreshTime= 5000+tmpn*50;
	arr.push('<tr><td></td><td colspan="2" class="drawleftborder"><div style="width:' + min_chat_list_container_width + 'px;height:1px;overflow:hidden;"></div></td></tr><tr><td class="room" colspan="3">' + l + ' ' + (people || "character(s)") + '</td></tr></table>');
	
	//bottom = '</div></td></tr><tr><td><div style="width:' + min_chat_list_container_width + 'px;height:1px;overflow:hidden;"></div></td></tr><tr><td class="room">' + l + ' ' + (people || "character(s)") + '</td></tr></table>';

	s = arr.join('');

/*
	// медленнее иннера.
	var newDiv = document.createElement("div");
	newDiv.innerHTML=s;
	chat_list_container.appendChild(newDiv);
*/
	chat_list_container.innerHTML = head+s+bottom;

	resetlist = false;

	//S(CTimer.stop() + '', 15, 1);
}

// Класс персонажа
function getClassByParams(obj) {
	var cls="";
	if (obj.online==0) cls="offline";	
	else if (InIgnore(obj.login)) cls="ignore";
	else if (obj.bot!=0) return "bot";
	else if (obj.login==me.login||(obj.clan.length>1&&me.clan==obj.clan)) cls="me";
	
	// добавляем возможность совместного использования 2х классов
	if (obj.friend!=0) cls+=" friend";
	if (obj.bandit!=0) cls+=" bandit";
	
	
	return cls;
}
function isRobot(pro) {
	return (pro>=25 && pro<=27);
}
// Сортировка списка
function sortlogins(a,b) {
	if (a.bid == b.bid) {
		if (a.grp == b.grp) {
			if (a.bid == 0) { // применять только вне боя
				if (sort_obj.me) { // себя наверх
					if (a.login == me.login) return -1;
					else if (b.login == me.login) return 1;
				}
				if (sort_obj.clan && me.clan && me.clan.length>1 && a.clan != b.clan) { // клан наверх
					if (a.clan == me.clan) return -1;
					else if (b.clan == me.clan) return 1;
				}
				if (sort_obj.trade && a.pro != b.pro) { // торгашей наверх
					if (a.pro == 30) return -1;
					else if (b.pro == 30) return 1;
					else if (a.pro == 6) return -1;
					else if (b.pro == 6) return 1;
				}
			}

			if (sort_obj.all==4)  { // отношение вверх
				if (!a.aggr) return 1;
				if (a.aggr<b.aggr)	return 1;
				else if (a.aggr==b.aggr) return 0;
				else return -1;
			}
			else if (sort_obj.all==3 && a.rank != b.rank) { // ранги наверх
				if (a.rank<b.rank)	 return 1;
				else return -1;
			} else 	if (sort_obj.all==2 && a.clan != b.clan) { // по клану
				if (a.lclan.length<=1) return 1;
				else if (b.lclan.length<=1) return -1;
				else {
//					if (a.clan.toLowerCase().indexOf("police")>=0) return -1;
//					else if (b.clan.toLowerCase().indexOf("police")>=0) return 1;
					if (a.lclan < b.lclan) return -1;
					else return 1;
				}
			}
			else if (sort_obj.all==1 && a.level != b.level) { // по уровню
				if (a.level > b.level) return -1; else return 1;
			}
			
			
			// по имени
			if (a.forsort < b.forsort) return -1; else return 1;
		} else {
			if (a.grp < b.grp) return -1; else return 1;
		}
	} else {
		if (a.bid == 0) return -1;
		else if (b.bid == 0) return 1;
		else if (me.bid != 0 && a.bid == me.bid) return -1;
		else if (me.bid != 0 && b.bid == me.bid) return 1;
		else if (a.bid < b.bid) return -1;
		else return 1;
	}
}

// Смена комнаты
function R(room_name,list) {

	UpdateCache();
	if (RoomName!=room_name) {
		ClearChat();
		if (cache.length>0) {
			noChatUpdate = true;
			for (i=0; i<cache.length-1; i++) S(cache[i].txt, cache[i].color, 1);
			noChatUpdate = false;
			S(cache[cache.length-1].txt, cache[cache.length-1].color, 1);
		}
	}

	logins = new Array();
	while(room_name.indexOf("'")>=0) room_name = room_name.replace("'","&prime;");
	RoomName = room_name;
	var i;
	var tmp = list.split(",");

	for (i=0; i<tmp.length; i++) {
		if (tmp[i].length>3) { AddToList(tmp[i], false) }
	}

	resetlist=true;
	resortlist=true;
	CreateList();
	away_offts = (new Date()).getTime()+10000;
}

// Удаляет перса из списка по логину
function DelFromList(login) {
	for (var i=0; i<logins.length; i++) {
		if (logins[i].login == login) {
			for (var j=i+1; j<logins.length; j++) logins[j-1]=logins[j];
			logins.length--;
			break;
		}
	}
}

// Добавляет персов в список
// id боя/группа/статус/клан/логин/уровень
function AddToList(s, enter) {
	var tmp2 = s.split("/");
	var obj = {};
	obj.bid=tmp2[0]; //battle id
	obj.clan=tmp2[3];
	obj.lclan=obj.clan.toLowerCase();
	obj.login=tmp2[4];
	obj.forsort=tmp2[4].toLowerCase();
	obj.rank=Number(tmp2[6]);
	obj.minlvl=Number(tmp2[7] % 100) || 0;
	obj.maxlvl=Math.floor(Number(tmp2[7]) / 100) || 0;
	obj.aggr=Number(tmp2[8]);
	obj.stake=Number(tmp2[9]) || 0;
	

	
	

	while (obj.forsort.charAt(0)=="*" || obj.forsort.charAt(0)=="_" || obj.forsort.charAt(0)=="-" || obj.forsort.charAt(0)==" ") {
		obj.forsort = obj.forsort.substring(1);
	}
	obj.level=Number(tmp2[5]);
	// статус закодирован побитово
	obj.online = (tmp2[2] & 1);
	obj.sleep = (tmp2[2] & 2);
	obj.bandit = (tmp2[2] & 4);
	obj.claim = (tmp2[2] & 8);
	obj.battle = (tmp2[2] & 16);
	obj.bot =  (tmp2[2] & 2048);
	obj.friend = (tmp2[2] & 4096); 
	obj.woman = (tmp2[2] & 8192);
	obj.casino = (tmp2[2] & 16384);
	obj.bloodbtl = (tmp2[2] & 32768);
	obj.grp = (tmp2[2] & 24) ? tmp2[1] : 0;
	obj.pro = ((tmp2[2] >> 5) & 63) || 0;
	
	if (obj.login.toLowerCase() == user) me=obj;
	
	//if (obj.minlvl || obj.maxlvl) obj.friend=0;
	
	if (obj.bot) obj.aggr = 0.5;
	

	
	
	//первое апреля
	if (aprilparty==true) {
		obj.pro=changeUserPro(obj.pro);
		obj.level=changeUserLevel(obj.level);
	}

	// ищем перса, может это не новый, а обновление старого
	for (var i=0; i<logins.length; i++)
		if (logins[i].login == obj.login) { // так и есть
			logins[i]=obj; return;
		}
	logins[logins.length] = obj;

	if (enter) // написать системное сообщение
	{
//		S("  "+mes_enter+" "+sLogin(obj.login),15);
		Z('', 26, '', obj.login);
	}
}

// Добавились/изменились персы в комнате
function A(login)
{
	AddToList(login, true);
	resetlist = true;
	resortlist = true;
}

// Ушли персы из комнаты
function D(login)
{
	DelFromList(login);

//	S('  ' + mes_leave + ' ' + sLogin(login), 15);
	Z('', 27, '', login);

	resetlist = true;
}

// Системное сообщение
function Z(dt, n, login1, login2, param)
{

	if (n==14)
	{
		add_scan(dt, login2);
		if (InIgnore(login2) || !scan_f) // ничего не делаем если отправитель в черном списке
			return;
	}

	if (!(1 & chat_filter))
	{
		return false;
	}

	if (!((1<<(n-1)) & chat_system_filter))
	{
		return false;
	}


	var sss = msys[n-1] || "";

	if (login1)
	{
		if (param)
		{
			var i = sss.indexOf("%");
			sss = sss.substring(0, i)+'<b>'+param+'</b>'+sss.substring(i+1);
		}

		S(dt + " [" + login1 + "] " + sss + " " + (login2 ? sLogin(login2) : ""), 15)
	}
	else
	{
		var i = sss.indexOf("%");
		if (param) sss = sss.substring(0, i)+'<b>'+param+'</b>'+sss.substring(i+1);
		else sss = sss.substring(0, i)+sLogin(login2)+sss.substring(i+1);
		S("  " + sss, 15, true);
	}
}
// добавляем в список сканируемых
function add_scan(dt, login) {
	var o;
	for (var i=0; i<scans.length; i++) {
		if (scans[i].login==login) { // персонаж есть в списке, сохроним
			// перенесём его вниз
			o = scans[i];
			for (var j = i; j<scans.length-1; j++) scans[j] = scans[j+1];
			scans[scans.length-1] = o;
			break;
		}
	}
	if (!o) {
		if (scans.length>=10) for (i=0; i<9; i++) scans[i] = scans[i+1];
		o = scans[scans.length>=10 ? 9 : scans.length] = {login: login, count: 0}
	}
	o.count++;
	o.date = dt;
	light_lamp(2);
}

// Очистить оба фрейма
function ClearChat()
{
	chat_list_container.innerHTML = body1;
	ClearChat1();
	ClearChat2();
}
// Очистка фрейма с чатом
function ClearChat1()
{
	chat1_container.innerHTML = body1;
}

function ClearChat2()
{
	chat2_container.innerHTML = body1;
}

// сброс рефреша списка народа в чате
function Y()
{
	clearTimeout(id_list);
	id_list = setTimeout(CreateList, listRefreshTime);
}

function setFocus()
{
	if (cmd_form && cmd_form.style.visibility == "visible")
	{
		cmd_form.text.focus();
	}
}

function light_lamp(num)
{
	var o = $('b___scan');

	if (!o) return false;

	if (num)
	{
		o.src = 'i/b___scan_' + num + '.gif';
		o.num = num;
		o.alt = o.title = top.mes_scan || 'Scan locator';
		o.style.cursor = 'pointer';
		o.style.cursor = 'hand';
	}
	else
	{
		o.src = 'i/b___scan_0.gif';
		o.num = 0;
		o.alt = o.title = '';
		o.style.cursor = 'default';
	}

	return o.num;
}

function reChatCmd() {
	chat_cmd = [];
	for (var i=0; i<chat_cmd_original.length; i++) chat_cmd[i]=chat_cmd_original[i];
	light_lamp(isVip?1:0);
}


function doAway() {
	var s = prompt(mes_away, away_text);
	if (!s) return;
	while (s.charAt(0)==" ") s = s.substring(1,s.length);
	while (s.indexOf("//")==0) s = s.substring(2,s.length);
	away_text = s;
	SetCookie("away", s);
	//SetCookie("away_"+user, s);
	S("  "+mes_away_on, 15, 1);
	away_state = true;
	away_stamp = new Object();
	resetlist = true;
	CreateList();
}

function doAwayOff() {
	if (away_state) {
		S("  "+mes_away_off, 15, 1);
		away_state = false;
		resetlist = true;
		CreateList();
	}
}

function SetCookie(cookie, str) {
	document.cookie = cookie+"="+encodeURIComponent(str)+"; path=/; expires=Fri, 01-Jan-2010 00:00:00 GMT";
	//document.cookie = escape(cookie)+"="+escape(str)+"; path=/; expires=Fri, 01-Jan-2010 00:00:00 GMT";
}

function GetCookie(cookie) {
	//cookie=escape(cookie);
	try {
		var i1 = document.cookie.indexOf(cookie+"=");
		if(i1<0) return "";
		i1 += cookie.length+1;
		var i2 = document.cookie.indexOf(";", i1);
		if(i2<0) i2 = document.cookie.length;
		return decodeURIComponent(document.cookie.substring(i1, i2));
	} catch(e) {
		//ошибка декодинга произошла.
	}
}



//for  split win
function LoadConf() {
	cf = Number(GetCookie('split_win')) || 0; //нижний фрэйм
	if (cf<0 || cf>=128) cf=0;
	split_win = cf;
//	window.document.getElementById("wins").rows = ["*", ( split_win>0 ? winheight : "0" ) ];
	setFonts();
}
function smscrolloff() {
	return;
}
function smscrollon() {
	return;
}
function econf(a,o) {

	pconf[a] = pconf[a]==1?0:1;
	o.childNodes[0].checked = (pconf[a]==1);
	SetCookie(a, pconf[a]==1?1:0);
}
function init2frame(e) {
	e.heigth=winheight;
}
function resize2frame(e) {
	if (e.id=="chatList") {

		SetCookie('chatListWidth',e.width);
	} else if  (e.id=="chatFrame2"){
		var doc=e.document;
		var elt=doc.getElementById("chatFrame1");
		var ratio=Math.floor(100*e.height/(e.height+elt.height))+"%";
		winheight=ratio;
		SetCookie('winheight',ratio);
	}
}
function setFonts()
{
	var size = pconf.fontSize;
	document.body.style.fontSize = size + 'px';

	SetCookie('fontSize', size);
}

function rankIndex(absrank) {
	var i=0;
	for (var j=1;j<rankNum.length;j++) {
		if (absrank<rankNum[j]) {
			i=j-1;
			break;
		}
	}
	return i;
}
function aprilPartyCheck(val) {
	aprilparty=Number(val)?true:false;
}
function aprilPartyCheck2(val) {
	invertlogins=Number(val)?true:false;
}
function changeUserPro(pro) {
	var newarr=resortProfArr();
	for (var i=0;i<defaultProfList.length;i++) {
		if (defaultProfList[i]==pro) {
			return newarr[i];
		}
	}

	return 0;
}
function resortProfArr() {
	if (resortedList.length>0)	{return resortedList;}
	var tmpArr=new Array();
	var tmp1=0, tr;

	//дилеров оставляем от кидалова.
	tmpArr[20]=1;
	tmpArr[19]=1;
	tmpArr[18]=1;
	tmpArr[17]=1;

	for (var i=0;i<defaultProfList.length-4;i++) {
		tr=true;
		while (tr) {
			tmp1=Math.floor(Math.random()*defaultProfList.length)
			if (!tmpArr[tmp1]) {
				tmpArr[tmp1]=1;
				resortedList.push(defaultProfList[tmp1]);
				tr=false;
			}
		}
	}
	resortedList[17]=26;
	resortedList[18]=27;
	resortedList[19]=28;
	resortedList[20]=30;
	return resortedList;
}
function changeUserLevel(num) {
	return (18-num)>0?(18-num):"∞";
}

function convertInverse(str) {
	var newstr="";
	for (var i=str.length-1;i>=0;i--) {
		newstr+=str.charAt(i)
	}
	return newstr;
}

function getFlashElement()
{
	return document.getElementById('tz');
}

function insertNode(string){
	var targetNode = document.createElement('div');
	targetNode.style.visibility = "hidden";
	targetNode.innerHTML = string;
	document.body.appendChild(targetNode);
}

function finishRegistration() 
{
	var partnerId = GetCookie('partner_counter')
	var s = "";
	if (lang == "de") {
		$('reg_finish').src = "counters.de.html";
	}
}


//setTimeout("testFlashElement()", 1000);

reChatCmd();
