/* (c) 2008-2010, Nikiforov Vladimir aka Volod */
var txt = '';
var txt_quot = '';
var last_name = '';
var quote_name = '';
var quote = '';

//глобальный массив, заполняется из PHP сода по мере вывода комментов
//ключ массива - comment_id
//каждый элемент - объект с полями name и gender
var user_names = new Array();

function insertAtCaret(textObj, textFieldValue)
{
	if (document.all)
	{
		if (textObj.createTextRange && textObj.caretPos && !window.opera)
		{
			var caretPos = textObj.caretPos;
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?textFieldValue + ' ' : textFieldValue;
		}
		else
		{
			textObj.value += textFieldValue;
		}
	}
	else
	{
		if (textObj.selectionStart)
		{
			var rangeStart = textObj.selectionStart;
			var rangeEnd = textObj.selectionEnd;
			var tempStr1 = textObj.value.substring(0, rangeStart);
			var tempStr2 = textObj.value.substring(rangeEnd, textObj.value.length);
			textObj.value = tempStr1 + textFieldValue + tempStr2;
			textObj.selectionStart = textObj.selectionEnd = rangeStart + textFieldValue.length;
		}
		else
		{
			textObj.value += textFieldValue;
		}
	}
}

function insert_text(open, close, endline)
{
	msgfield = document.getElementById('comment');
	// IE support
	if (document.selection && document.selection.createRange)
	{
		msgfield.focus();
		sel = document.selection.createRange();
		sel.text = open + sel.text + close;
		msgfield.focus();
	}
	// Moz support
	else if (msgfield.selectionStart || msgfield.selectionStart == '0')
	{
		var startPos = msgfield.selectionStart;
		var endPos = msgfield.selectionEnd;
		msgfield.value = msgfield.value.substring(0, startPos) + open + msgfield.value.substring(startPos, endPos) + close + msgfield.value.substring(endPos, msgfield.value.length);
		p = endPos + open.length + close.length;
		if (endline)
			p -= 9 + quote_name.length;
		msgfield.selectionStart = msgfield.selectionEnd = p;
		msgfield.focus();
	}
	// Fallback support for other browsers
	else
	{
		msgfield.value += open + close;
		msgfield.focus();
	}
	return;
}

function get_selected_text()
{
	var msgfield = document.getElementById('comment');
	var s = '';
	if (document.selection && document.selection.createRange)
	{
		s = document.selection.createRange().text;
	}
	else if (msgfield.selectionStart || msgfield.selectionStart == '0')
	{
		s = msgfield.value.substring(msgfield.selectionStart, msgfield.selectionEnd);
	}	
	return s;
}

function copy_quote(cid)
{
	name = user_names[cid].name;
	gender = user_names[cid].gender;
	txt = '';
	if (document.getSelection)
	{
		txt = window.getSelection();
	}
	else if (document.selection)
	{
		txt = document.selection.createRange().text;
	}else if (window.getSelection)
	{
		txt = window.getSelection().toString();
	} 
	txt_quot = txt;
	if (gender != '')
	{
		name += '|' + gender;
	}
	txt = '[quote=' + name + ']' + txt + '[/quote]\n';
	last_name = name;
}

function paste_quote()
{
	if (txt_quot != '' && document.getElementById('comment'))
	{
		e = document.getElementById('comment');
		insertAtCaret(e, txt);
		e.focus();
		quote_name = last_name;
	}
	else
	{
		alert('Выделите мышью текст, который хотите процитировать!');
	}
}

function hide_all_boards()
{
	$('#colorboard').hide();
	$('#sizeboard').hide();
	$('#attrboard').hide();
	$('#smileboard1').hide();
	$('#smileboard2').hide();
}

function tag_emotion(emo)
{
	insert_text(' ' + emo + ' ', "", false);
	hide_all_boards();
}

function open_board(n)
{
	c = $('#'+n);
	if (c.css('display') == 'none')//check first, than - hide_all()!
	{
		hide_all_boards();
		c.show();
	}
	else
	{
		hide_all_boards();
	}
}

function tag_color(color)
{
	insert_text("[color=" + color + "]", "[/color]", false);
	hide_all_boards();
}

function tag_size(size)
{
	insert_text("[size=" + size + "]", "[/size]", false);
	hide_all_boards();
}

function tag_attr(attr)
{
	insert_text("["+attr+"]", "[/"+attr+"]", false);
	hide_all_boards();
}

function tag_quot()
{
	insert_text("[quot]", "[/quot]", false);
}

function tag_url()
{	
	var seltext = get_selected_text();
	var u = prompt("URL ссылки", (seltext.indexOf('http://') >= 0) ? seltext : 'http://');
	if (!u) return;
	if (seltext == '')
	{
		var n = prompt("Название страницы", 'ссылка');
		if (!n) return;
		insert_text("[url=" + u + "]" + n + "[/url]", "", false);
	}
	else
	{
		insert_text("[url=" + u + "]", "[/url]", false);
	}
}

function tag_img()
{
	var seltext = get_selected_text();
	var u = prompt("URL изображения", (seltext.indexOf('http://') >= 0) ? seltext : 'http://');
	if (u)
	{
		(seltext == '') ? insert_text("[img]" + u + "[/img]", "", false) : insert_text("[img]", "[/img]", false);
	}
}

function replay_to(n, cid)
{
	t = document.getElementById('comment');
	if (t.value != '') t.value += "\n";
	t.value = t.value + '(' + n + '#' + user_names[cid].name + '):';
	scroll_to_comment();
}

function scroll_to_comment()
{
	c = document.getElementById('comment');
	if (c)
	{
		window.scrollTo(0, getBounds(c).top);
		c.focus();
	}
}

function split_quote()
{
	if (quote_name == '')
	{
		alert('Процитируйте хоть кого-нибудь! Разбивается последняя цитата.');
	}
	else
	{
		insert_text("[/quote]\n\n[quote="+quote_name+"]", "", true);
	}
}

function ctrl_enter(e, form)
{
	if (((e.keyCode == 13) || (e.keyCode == 10)) && (e.ctrlKey == true))
		form.onsubmit();
	if (e.keyCode == 27 && form.onreset)
		form.onreset();
}
