function insertNick(text)
{
	if (text.replace(" ","") != "")
	{
		insertAtCaret(comment_field, "**"+text+"**");
	}
}

function bbold(area)
{
	if(!area.parentNode) area = document.getElementById(area);
	var text = "Жирный текст";
	if(window.txt.replace(" ","") == "")
	{
		var caret = getCaretPosition(area);
		if(caret.start < caret.end) text = area.value.substr(caret.start, caret.end-caret.start);
	} else text = window.txt;
	if(text.indexOf("\n") == -1) insertTags(area, "**", "**", text);
	else alert("Текст для форматирования не может быть многострочным!");
}

function bitalic(area)
{
	if(!area.parentNode) area = document.getElementById(area);
	var text = "Курсивный текст";
	if(window.txt.replace(" ","") == "")
	{
		var caret = getCaretPosition(area);
		if(caret.start < caret.end) text = area.value.substr(caret.start, caret.end-caret.start);
	} else text = window.txt;
	if(text.indexOf("\n") == -1) insertTags(area, "//", "//", text);
	else alert("Текст для форматирования не может быть многострочным!");
}

function bunderline(area)
{
	if(!area.parentNode) area = document.getElementById(area);
	var text = "Подчеркнутый текст";
	if(window.txt.replace(" ","") == "")
	{
		var caret = getCaretPosition(area);
		if(caret.start < caret.end) text = area.value.substr(caret.start, caret.end-caret.start);
	} else text = window.txt;
	if(text.indexOf("\n") == -1) insertTags(area, "__", "__", text);
	else alert("Текст для форматирования не может быть многострочным!");
}

function burl(area)
{
	if(!area.parentNode) area = document.getElementById(area);
	var text = "Адрес ссылки|Текст ссылки";
	if(window.txt.replace(" ","") == "")
	{
		var caret = getCaretPosition(area);
		if(caret.start < caret.end) text = area.value.substr(caret.start, caret.end-caret.start);
	} else text = window.txt;
	if(text.indexOf("\n") == -1) insertTags(area, "[[", "]]", text);
	else alert("Текст для форматирования не может быть многострочным!");
}

function bcode(area, lang)
{
	if(!area.parentNode) area = document.getElementById(area);
	var text = "Код";
	if(!lang) lang = "Delphi"
	if(window.txt.replace(" ","") == "")
	{
		var caret = getCaretPosition(area);
		if(caret.start < caret.end) text = area.value.substr(caret.start, caret.end-caret.start);
	} else text = window.txt;
	insertAtCaret(area, "<code "+lang+">\n"+text+"\n</code>\n", true);
	bpanel();
//	insertTags(area, "\n<code Delphi>\n", "\n</code>\n", text);
}

function copyQ()
{
  window.txt='';
  if (document.getSelection)
  {
    window.txt=document.getSelection()
  }
  else if (document.selection)
  {
    window.txt=document.selection.createRange().text;
  }
}
function pasteQ(area, txt)
{
	if(!area.parentNode) area = document.getElementById(area);
	if(txt) window.txt = txt;
	toQ = ">>>\n" + window.txt + "\n<<<\n";
	if (window.txt.replace(" ","") != "")
	{
		insertAtCaret(area, toQ, true);
	}
	else alert("Не выделен текст для цитирования!\nДля вставки цитаты необходимо выбрать нужный текст и нажать на кнопку цитирования.");
}

function quote(area, txt)
{
	if(!area.parentNode) area = document.getElementById(area);
	toQ = ">>>\n" + txt + "\n" + window.txt + "\n<<<\n";
	insertAtCaret(area, toQ, true);
}

var selComs = new Array();
var selCount = 0;
function selectComment(id)
{
	var obj = document.getElementById("c" + id);
	if(selComs[id] && selComs[id].length > 0)
	{
		obj.className = selComs[id];
		selComs[id] = false;
		selCount--;
	}
	else
	{
		selComs[id] = obj.className;
		obj.className = "coms_selected";
		selCount++;
	}
	del_button.value = "Удалить (" + selCount + ")";
}

function deleteComment(id)
{
	if(!confirm("Вы уверены, что хотите удалить этот комментарий?")) return;
	var request = "act=delcom&delete="+id;
	makePOSTRequest('/news/' + newsAlias + '.html', request, comsDeleted);
}
function comsDelete()
{
	if(selCount > 0)
	{
		var request = "act=delcom&delete="
		for(var id in selComs)
		{
			request += id + "\n";
		}
		makePOSTRequest('/news/' + newsAlias + '.html', request, comsDeleted);
	} else alert("Ошибка! Не выбраны комментарии для удаления...\nДля выделения комментария щелкните на его дату.");
}
function comsDeleted()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			//alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				for(i = 1; i < response.length; i++)
				{
					var id = response[i];
					if(id.length == 0) continue;
					var obj = document.getElementById("com" + id);
					obj.style.display = "none";
					selComs[id] = false;
					selCount--;
				}
				selCount = 0;
				selComs = Array();
				del_button.value = "Удалить (" + selCount + ")";
			} else alert('Не удаётся удалить комментарии');
		} else alert('Не удаётся удалить комментарии');
	}
}

var sourceComment = Array(); //исходный код комментариев для восстановления при отмене редактирования
function editComment(int_id, id)
{
	var request = "act=getcom&id="+id;
	var obj = document.getElementById("com"+id+"_content");
	if(!sourceComment[id] || sourceComment[id] == "") sourceComment[id] = obj.innerHTML;
	obj.innerHTML = "<p>Подождите, пока загружается форма редактирования...</p>";
	obj.focus();
	makePOSTRequest('/news/' + newsAlias + '.html', request, comsEdited);
}

function comsEdited()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				id = response[1];
				var obj = document.getElementById("com"+id+"_content");
				var comText = "";
				for(i = 2; i < response.length; i++)
				{
					comText += response[i] + "\n";
				}
				var areaId = 'editedComment'+id;
				obj.innerHTML = '<center><textarea rows="12" id="'+areaId+'" onKeyPress="if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) saveComment(\''+id+'\', \''+areaId+'\', true)">'+comText+'</textarea></center><div class="button_panel"><input type="button" id="editedComment_submit" value="Сохранить" title="Сохранить изменения (Ctrl+Enter)" onClick="saveComment(\''+id+'\', \''+areaId+'\', true)" /><input type="button" value="B" id="button_b" title="Жирное выделение" onClick="bbold(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="I" id="button_i" title="Курсив" onClick="bitalic(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="U" id="button_u" title="Подчеркнуто" onClick="bunderline(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="URL" id="button_url" title="Вставить ссылку" onClick="burl(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="Код" id="button_code" title="Блок с кодом" onClick="bcode(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="Цитата" id="button_quote" title="Вставить выделенное как цитату" OnClick="pasteQ(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" id="editedComment_cancel" value="Отмена" title="Отменить редактирование" onClick="saveComment(\''+id+'\', \''+areaId+'\', false)" /></div>';
				document.getElementById(areaId).focus();
			} else alert('Не удаётся начать редактирование комментария');
		} else alert('Не удаётся начать редактирование комментария');
	}
}

function saveComment(id, areaId, apply)
{
	var obj = document.getElementById("com"+id+"_content");
	if(!apply && sourceComment[id])
	{
		obj.innerHTML = sourceComment[id];
		sourceComment[id] = "";
	}
	else
	{
		var area_field = document.getElementById(areaId);
		var request = "act=savecom&id="+id+"&content="+encodeURIComponent(area_field.value);
		obj.innerHTML = "<p>Подождите, пока изменения будут сохранены...</p>";
		makePOSTRequest('/news/' + newsAlias + '.html', request, comsSaved);
	}
}

function comsSaved()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				id = response[1];
				var obj = document.getElementById("com"+id+"_content");
				var comText = "";
				for(i = 2; i < response.length; i++)
				{
					if(response[i].length == 0) continue;
					comText += response[i];
					sourceComment[id] = "";
				}
				obj.innerHTML = comText;
			} else alert('При попытке сохранения изменений возникла ошибка!');
		} else alert('При попытке сохранения изменений возникла ошибка!');
	}
}
function CheckCommentForm()
{
	if(comment_field.value.length == 0)
	{
		alert("Не введен текст комментария!");
		return false;
	}
}

function CheckNewsForm()
{
	var obj = document.getElementById('newsTitle');
	if(obj.value.length > 64)
	{
		return confirm("Превышена максимальная длина заголовка новости. Заголовок будет обрезан до 64 символов.\nВы хотите продолжить?");
	}
	if(obj.value.length == 0)
	{
		alert("Не введен заголовок для новости!");
		return false;
	}
	if(comment_field.value.length == 0)
	{
		alert("Не введен текст новости!");
		return false;
	}
}
function deleteNews(id)
{
	var request = "act=delnews&delete="+id;
	if(confirm("Вы уверены, что хотите удалить эту новость?")) makePOSTRequest('/news.html', request, newsDeleted);
}
function newsDeleted()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				var id = response[1];
				var obj = document.getElementById("news" + id);
				obj.style.display = "none";
			} else alert('Ошибка! Новость удалить не удалось...');
		} else alert('Ошибка! Новость удалить не удалось...');
	}
}
var sourceNews = Array(); //исходный код комментариев для восстановления при отмене редактирования
function editNews(id)
{
	var request = "act=getnews&id="+id;
	var obj = document.getElementById("newsItem"+id);
	if(!sourceNews[id] || sourceNews[id] == "") sourceNews[id] = obj.innerHTML;
	obj.innerHTML = "<p>Подождите, пока загружается форма редактирования...</p>";
	obj.focus();
	makePOSTRequest('/news.html', request, newsEdited);
}

function newsEdited()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				id = response[1];
				var obj = document.getElementById("newsItem"+id);
				var comText = "";
				titleText = response[2];
				for(i = 3; i < response.length; i++)
				{
					comText += response[i] + "\n";
				}
				var areaId = 'editedNews'+id;
				var titleId = 'editedNews_title'+id;
				obj.innerHTML = '<label>Заголовок новости: <input type="text" id="'+titleId+'" style="width: 50%" onKeyPress="if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) saveNews(\''+id+'\', \''+areaId+'\', \''+titleId+'\', true)" value="'+titleText+'"  /></label><center><textarea rows="12" id="'+areaId+'" onKeyPress="if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) saveNews(\''+id+'\', \''+areaId+'\', \''+titleId+'\', true)">'+comText+'</textarea></center><div class="button_panel"><input type="button" id="editedNews_submit" value="Сохранить" title="Сохранить изменения (Ctrl+Enter)" onClick="saveNews(\''+id+'\', \''+areaId+'\', \''+titleId+'\', true)" /><input type="button" value="B" id="button_b" title="Жирное выделение" onClick="bbold(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="I" id="button_i" title="Курсив" onClick="bitalic(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="U" id="button_u" title="Подчеркнуто" onClick="bunderline(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="URL" id="button_url" title="Вставить ссылку" onClick="burl(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" value="Код" id="button_code" title="Блок с кодом" onClick="bcode(\''+areaId+'\')" onMouseOver="copyQ()" /><input type="button" id="editedNews_cancel" value="Отмена" title="Отменить редактирование" onClick="saveNews(\''+id+'\', \''+areaId+'\', \''+titleId+'\', false)" /></div>';
				document.getElementById(areaId).focus();
			} else alert('При попытке редактирования новости возникла ошибка!');
		} else alert('При попытке редактирования новости возникла ошибка!');
	}
}
function saveNews(id, areaId, titleId, apply)
{
	var obj = document.getElementById("newsItem"+id);
	if(!apply && sourceNews[id])
	{
		obj.innerHTML = sourceNews[id];
		sourceNews[id] = "";
	}
	else
	{
		var area_field = document.getElementById(areaId);
		var title_field = document.getElementById(titleId);
		var newsTitle = encodeURIComponent(title_field.value);
		var request = "act=savenews&id="+id+"&title="+newsTitle+"&content="+encodeURIComponent(area_field.value);
		obj.innerHTML = "<p>Подождите, пока изменения будут сохранены...</p>";
		makePOSTRequest('/news.html', request, newsSaved);
	}
}

function newsSaved()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok")
			{
				id = response[1];
				var obj = document.getElementById("newsItem"+id);
				var obj_title = document.getElementById("newsItem"+id+"_title");
				var comText = "";
				var newsTitle = response[2];
				for(i = 3; i < response.length; i++)
				{
					if(response[i].length == 0) continue;
					comText += response[i];
				}
				sourceNews[id] = ""
				obj.innerHTML = comText;
				obj_title.innerHTML = newsTitle;
			} else alert('При попытке сохранения изменений возникла ошибка!');
		} else alert('При попытке сохранения изменений возникла ошибка!');
	}
}

var current_panel;
function bpanel(panel_id)
{
	if(!panel_id)
	{
		current_panel.style.display = 'none';
		main_panel.style.display = 'block';
	}
	else
	{
		current_panel = document.getElementById(panel_id);
		current_panel.style.display = 'block';
		main_panel.style.display = 'none';
	}
}

function loadSmiles(panel_id, textfield_id, group_id)
{
	if(!group_id) group_id = 1;
	makePOSTRequest('/smiles/panel.php', 'id='+group_id+'&panel_id='+panel_id+'&field_id='+textfield_id, smilesLoaded);
}

function smilesLoaded()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
//			alert(http_request.responseText);
			var response = http_request.responseText.split("\n");
			if(response[0] == "ok" && response.length == 3)
			{
				var smiles = response[1];
				var panel_id = response[2];
				var obj = document.getElementById(panel_id);
				obj.innerHTML = smiles;
			} else alert('Невозможно загрузить смайлики!');
		} else alert('Невозможно загрузить смайлики!');
	}
}

function bsmile(area, smile)
{
	if(!area.parentNode) area = document.getElementById(area);
	insertAtCaret(area, ' '+smile, false);	
}