// Функции для вставки в textarea

// Помнтить текущую позицию (IE)
function storeCaret(text) {
	if (typeof(text.createTextRange) != "undefined")
		text.caretPos = document.selection.createRange().duplicate();
}

// Заменяет выделенный текст переданным текстом
function replaceText(text, textarea) {
	// Попытка создать текстовый диапозон (IE).
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
		var caretPos = textarea.caretPos;
		if (caretPos.text.charAt(caretPos.text.length - 1) == ' ') {
		    caretPos.text = text + ' ';
		} else {
		    caretPos.text = text;
		}
		caretPos.select();
	}
	// Замена текстового диапозона (Mozilla).
	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange)
		{
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		textarea.scrollTop = scrollPos;
	}
	// Поместить в конец текста.
	else {
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}
}

// Окружает выделенный текст переменными text1 и text2.
function surroundText(text1, text2, textarea) {
	// Может выделенный текст будет создан?
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
		var caretPos = textarea.caretPos, temp_length = caretPos.text.length;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;

		if (temp_length == 0) {
			caretPos.moveStart("character", -text2.length);
			caretPos.moveEnd("character", -text2.length);
			caretPos.select();
		}
		else
			textarea.focus(caretPos);
	}
	// Выделенный текст окружить (Mozilla).
	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var newCursorPos = textarea.selectionStart;
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text1 + selection + text2 + end;

		if (textarea.setSelectionRange) {
			if (selection.length == 0)
				textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
			else
				textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
			textarea.focus();
		}
		textarea.scrollTop = scrollPos;
	}
	// Только поместить в конец.
	else {
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);
	}
}

// Дополнительно
// Вставка простейших тегов (таких как [b], [i], [u] и т.п.)
function insertTags(tag_name, textarea) {
    if (tag_name)
    surroundText('[' + tag_name + ']', '[/' + tag_name + ']', document.getElementById(textarea));
}

// Выводит сведения о программе
function about(id) {
	var div = document.getElementById(id);
	if ('none' != div.style.display) {
        div.style.display = 'none';
        return false;
    }
    div.innerHTML = '<div align=\"center\" onClick=\"about(\''+id+'\');\" class=\"knop\">'
        + 'Вы можете использовать любые стандартные BB-коды, а не только эти.'
        + '<\/div>';
    div.style.display = '';
    return false;
}

