
function chatshow()
{
	var objchat = document.getElementById('chat');
	var arrow = document.getElementById('chatarrow');
	if(objchat.style.display=='none')
	{
		objchat.style.display = 'block';
		chat.frame.src = './simple/chat/'+chat.item+'.html';
		setcookie(chat.cookie.show,'show');
		if(arrow)
		{
			arrow.className = 'chatarrowminus';
		}
		chat.show = true;
		chat.close = true;
	}
	else
	{
		objchat.style.display = 'none';
		chat.frame.src = '';
		setcookie(chat.cookie.show,'');
		if(arrow)
		{
			arrow.className = 'chatarrowplus';
		}
		chat.close = false;
	}
}

function chatshowu()
{
	var uframe = document.getElementById('chatuframe');
	var subbutton = document.getElementById('chatsubbutton');
	if(uframe.style.display=='none')
	{
		uframe.style.display = 'block';
		subbutton.className = 'chatsubup';
	}
	else
	{
		uframe.style.display = 'none';
		subbutton.className = 'chatsubdown';
	}
}

function chattemp(name)
{
	if(!name)
	{
		name = 'Anonimus';
	}
	var send = false;
	while(name = prompt("Укажите ваш ник:",name))
	{
		if(name.length<3||name.length>10)
		{
			alert("Временный ник должен быть от 3 до 10 символов.");
		}
		else
		{
			var regexp = /^\w+$/i;
			if(regexp.test(name))
			{
				send = true;
				break;
			}
			else
			{
				alert('Временный ник может состоять только из\nлатинских букв, цыфр и символа "_".');
			}
		}
	}
	if(send)
	{
		chatregistration('registration:'+name,name);
	}
}

function chatregistration(text,name)
{
	var request = false;
	var msxmlhttp = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP' );

	if(window.XMLHttpRequest)
	{
		request = new XMLHttpRequest;
	}
	else if(window.ActiveXObject)
	{
		for(var i=0; i<msxmlhttp.length; i++)
		{
			try
			{
				request = new ActiveXObject(msxmlhttp[i]);
			}
			catch(e)
			{
				request = false;
			}
		}
	}
	if(!request)
	{
		alert('Ваш браузер не поддерживает XMLHTTP.');
		return false;
	}
	request.onreadystatechange = function()
	{
		if(request.readyState==4)
		{
			if(request.status==200)
			{
				var regexp = /<result>([\w]+)<\/result>/i;
				var response = request.responseText;
				if(result = response.match(regexp))
				{
					if(result[1]=='exist')
					{
						alert('К сожалению такой ник уже занят.');
						chattemp();
					}
					else if(result[1]=='false')
					{
						alert('Регистрация временных ников приостановлена.');
					}
					else
					{
						setcookie(chat.cookie.session,result[1]);
						var chatreg = document.getElementById('chatreg');
						var chatform = document.getElementById('chatform');
						chatreg.style.display = 'none';
						chatform.style.display = 'block';
					}
				}
				else
				{
					alert('Произошла ошибка, сообщите администратору.');
				}
			}
			else
			{
				alert('Произошла ошибка, попробуйте позже.');
			}
		}
	}
	request.open( 'POST', './chat.html', true );
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(text);
}

function chatsetmessage(html)
{
	var uframe = document.getElementById('chatuframe');
	var subbutton = document.getElementById('chatsubbutton');

	if(!chat.foru)
	{
		uframe.style.display = 'block';
		subbutton.className = 'chatsubup';
	}
	uframe.innerHTML += '<p>'+ html +"</p>\n";
	uframe.scrollTop = 9000;
}
function chatclear()
{
	var uframe = document.getElementById('chatuframe');
	var subbutton = document.getElementById('chatsubbutton');

	if(!chat.foru)
	{
		uframe.style.display = 'none';
		subbutton.className = 'chatsubdown';
	}
	uframe.innerHTML = '';
}
function chatsetuser(text)
{
	var value = chat.message.value;
	var temp = '';
	var result = new Array();
	var regexp = [];
	regexp.before = /(,\s*$|^\s*$)/;
	regexp.after = /^\s*,/;
	var sel = [];
	sel.start = value.length;
	sel.end = value.length;
	sel.position = 0;
	if(chat.message.setSelectionRange)
	{
		sel.start = chat.message.selectionStart;
		sel.end = chat.message.selectionEnd;
	}
	else if(document.selection)
	{
		chat.message.focus();
		var range = document.selection.createRange();

		var textrange = chat.message.createTextRange();
		var duplicate = textrange.duplicate();
		textrange.moveToBookmark(range.getBookmark());
		duplicate.setEndPoint('EndToStart', textrange);

		sel.start = duplicate.text.length;
		sel.end = sel.start + range.text.length;
	}

	temp = value.substr(0,sel.start).replace(/\s+$/,'');
	sel.position += temp.length;
	result.push(temp);
	if(!regexp.before.test(temp))
	{
		result.push(', ');
		sel.position += 2;
	}
	result.push(text);
	sel.position += text.length;
	temp = value.substr(sel.end);
	if(regexp.after.test(temp))
	{
		temp = temp.replace(/^\s+/,'');
	}
	else
	{
		result.push(', ');
		sel.position += 2;
	}
	result.push(temp);
	chat.message.value = result.join('');

	if(chat.message.setSelectionRange)
	{
		chat.message.setSelectionRange(sel.position,sel.position);
	}
	else if(chat.message.createTextRange)
	{
		var range = chat.message.createTextRange();
		range.collapse(true);
		range.moveEnd('character',sel.position);
		range.moveStart('character',sel.position);
		range.select();
	}
	chat.message.focus();
}

