/**
 * @author rym<rym.the.great@gmail.com>
 */


/**
 * запрос комментариев
 * @return
 */
function showComments()
{
	$.getJSON("/ajax/comment",{'res_id':resource_id, 'post_id':post_id},getComments);
}


/**
 * Вставка в страницу полученных комментариев
 * @param data
 * @return
 */
function getComments(data)
{
	//var res = $.parseJSON(data);
	$('#comments').replaceWith(html_entity_decode(data.data));
	$('#show_comments').click(addComment);
}

/**
 * Текстареа для добавления комментария
 * @param data
 * @return
 */
function addComment(data)
{
	if(user_can_comment)
	{
		var txt = $("<div id='newcommdiv'></div>");
		txt.append($("<textarea cols='23' rows='5'></textarea>").attr('id', 'newcomm'));
		txt.insertBefore("#show_comments");
		$('#show_comments').unbind('click', addComment);
		$('#show_comments').click(postComment);
	}
	else
	{
		showLoginForm();
	}
}

/**
 * Отправка комментария на сервер
 * @param data
 * @return
 */
function postComment(data)
{
	if($("#newcomm").val() != '')
	$.post(
			'/ajax/comment/add/',
			{ 'post_id': post_id, 'res_id' : resource_id, 'text' : $("#newcomm").val()},
			commentAdded,
			"json"
	);
	else
	{
		alert("Ну напишите хотя бы пару строчек");
	}
}

/**
 * Подтвердждение записи комментария в БД
 * @param data
 * @return
 */
function commentAdded(data)
{
	alert('Комментарий добавлен');
	$('#show_comments').unbind('click', postComment);
	//$('#show_comments').click(addComment);
	$("#newcommdiv").remove();
	showComments();
}
/**
 * Назначение кнопкам функционала
 * @return
 */
function commentButtons()
{
	$('.n_edit').each(function(){
		var pattern=/comm_nav_edit_(\d+)/;
		var id = this.id.match(pattern);
		if(id)
		{
			$(this).click(editComment);
			$(this).attr('title','Редактировать комментарий');
		}
	});
	$('.n_delete').each(function(){
		var pattern=/comm_nav_delete_(\d+)/;
		var id = this.id.match(pattern);
		if(id)
		{
			$(this).click(deleteComment);
			$(this).attr('title','Удалить комментарий');
		}
	});
}
/**
 * Редактирование комментария
 * @return
 */
function editComment()
{
	var pattern=/comm_nav_edit_(\d+)/;
	var id = this.id.match(pattern);
	if(id)
	{
		var div = $("<textarea cols='23' rows='5'></textarea>").attr('id', 'comm_edit_area_' + id[1]);
		div.html($.trim($("#comm_text_" + id[1]).html()));
		$("#comm_text_" + id[1]).replaceWith(div);
		var el = $("<div class='navigation n_save' id='comm_nav_save_" + id[1] + "' title='Сохранить изменения' >&nbsp;</div>");
		el.click(updateComment);
		el.insertBefore($("#comm_nav_edit_" + id[1]));
	}
}

/**
 * Удаление комментария
 * @param data
 * @return
 */
function deleteComment(data)
{
	if(confirm("Вы действительно хотите удалить комментарий?"))
	{
		var pattern=/comm_nav_delete_(\d+)/;
		var id = this.id.match(pattern);
		if(id)
		{
			$.post(
					'/ajax/comment/delete/',
					{ 'id': id[1], 'post_id': post_id, 'res_id' : resource_id},
					function(res){
						if(res.success == 1)
						{
							alert("Удалено");
							$("#commblock_" + res.data.id).remove();
						}else
						{
							alert(html_entity_decode(res.error));
						}
					},
					"json");
		}
	}
}
/**
 * Подтверждение результата сохранения комментария
 * @return
 */
function updateComment()
{
	var pattern=/comm_nav_save_(\d+)/;
	var id = this.id.match(pattern);
	if(id)
	{
		$.post(
			'/ajax/comment/edit/',
			{ 'id': id[1],'post_id': post_id, 'res_id' : resource_id, 'text' : $("#comm_edit_area_" + id[1]).val()},
			function(res){
				if(res.success == 1)
				{
					alert("Сохранено");
					$("#comm_edit_area_" + res.data.id).replaceWith($("<p></p>").attr('id', 'comm_text_' + res.data.id).html(html_entity_decode(res.data.text)));
					$("#comm_nav_save_" + res.data.id).remove();
				}else
				{
					alert(html_entity_decode(res.error));
				}
			},
			"json");
	}
}
