/* ***************** Добавление / редактирование / удаление комментариев ***************** */
var flood_control = {
        timer : null,
        interval : 1000, // ms
        deny : false
}


var STOP_PUBLICATION = false;

function add_comment(id, hide_checkbox, on_composition_page, redirect) {
	if (STOP_PUBLICATION) {
		alert('В связи с техническими работами на сайте публикация и редактирование комментариев временно приостановлены.'); 
		return false;
	}
	// id комментария, к которому добавляют ответ
	// если комментарий корневой - то id = 0
	
	// сначала надо проверить, не открыта ли уже форма
	// если уже открыта - закрыть
	// проверить можно, например, просто по наличию дочерних элементов
	// а лучше - по наличию среди них формы (тега <form>)
	// Т.к. по $() jQuery всегда возвращает объект, даже если его не было
	// нужно проверять длину.
	
	// hide_checkbox - прятать ли поле-галочку "Уведомлять меня при ответе"
	
	// on_composition_page - показывает, что комментарий добавляется
	// на самой странице произведения - в таком случае при успешном
	// добавлении нужно провести некоторые действия 
	// (обновить надпись на кнопке и количество комментариев)
    
    // redirect - показывает делать ли перенаправление на страницу с комментариями (document.location.pathname + '?comments';)
    // если комментарий отправляется со страницы произведения, такой подход впервые применился в Афише
    
	if ( $('#for_form_' + id + ' form').length != 0 ) {
		remove_slideup('#comment_form');
		return false;
	}
	// адрес обращения формы делаем вида /раздел/произведение.html?addcomment
	// т.к. форма добавления комментария должна вызываться из контекста страниц произведений
	// сформируем её динамически из адреса страницы

	var action_url = document.location.pathname + '?addcomment';
	var form = '\
	<div id="comment_form">\
		<div class="title">Добавить мнение \
			<a class="close" onclick="return remove_slideup(\'#comment_form\');" href="#close">[x]</a>\
		</div>\
		<form name="vbform" onsubmit="return add_comment_submit(this, ' + (on_composition_page == true) + ');" action="' + action_url+ '" method="post">\
			<input type="hidden" name="id" value="' + id + '" />\
			<textarea name="comment_text"></textarea>\
			<div class="note">Чтобы вставить цитату, выделите текст и <a onmouseover=\'copyQ();\' href=\'javascript:pasteQ();\'><u>нажмите здесь</u></a>.</div>';
	if (!hide_checkbox) form += '<input type="checkbox" name="notify_on_answer" value="1"> Получить уведомление при ответе.<br><br>';
    if (on_composition_page) form += '<input type="hidden" name="on_composition_page" value="1" />';
	if (redirect) form += '<input type="hidden" name="redirect" value="1" />';
	form += '<input class="newbutton" name="subm" type="submit" value="Отправить">\
		</form>\
			</div>\
			';

    $.autoHideAll('#for_form_' + id);
            
	if ($('#comment_form')) { $('#comment_form').remove(); }
        $('#for_form_' + id).html( form );
        
        $('#comment_form', '#for_form_' + id).autoHide(
            7000,
            function() {$(this).remove();},
            function() {
                var text = $.trim($('textarea', this).val());
                if (text) return false;
                return true;
            }
        );
        
        $('#comment_form').slideDown();
        return false;
}


function add_comment_submit(form) {
        if ( !$.trim( form.comment_text.value ) ) {
                alert( 'Вы не написали текст' );
                return false;
        }
        
        if (flood_control.deny)        return false;
        else {
                flood_control.timer = setTimeout(function() {
                        clearTimeout(flood_control.timer);
                        flood_control.timer = null;
                        flood_control.deny = false;
                }, flood_control.interval);
                flood_control.deny = true;
        }

        var query = ''; // строка запроса к серверу
        query += 'id=' + form.id.value; // id комментария, к корому добавляют ответ
        var notify = (form.notify_on_answer != undefined && form.elements.notify_on_answer.checked == true);
        query += '&notify_on_answer=' + ( (notify) ? 1 : 0 ); 
        query += '&comment_text=' + urlEncode(form.comment_text.value);
        
        var oncp = (form.on_composition_page != undefined && form.on_composition_page.value == true);
        if (oncp) query += '&on_composition_page=1';
        
        $.ajax({
		type: 'POST',
		url: form.action,
		data : query,
		success : function(data) { // ответ - строка с сервера
			// если redirect == false - аякс возвращает написанный комментарий на туже страницу с которой он был написано
            // в противном сучае форму добавления комментария закрываем и редиректим на страницу с комментарием
            if (!form.redirect) { 
                eval(data); // тут будет ассоциативный массив - array_from_server
			    var fpid = array_from_server['foreparent_id'];
			    var c_text = array_from_server['comment_item_HTML'];
			    // если комментарий корневой - вставляем новый в начало
			    // в ином случае - в конец
			    if (fpid == 0) $('#kids_id_' + fpid).prepend(c_text);
			    else $('#kids_id_' + fpid).append(c_text);
			    // init_user_block();
                remove_slideup('#comment_form');

                if (oncp) {
                    // заменить надпись на кнопке и ссылку
                    var cc = parseInt($('.comments-count').first().text());
                    cc += 1; // т.к. новый комментарий добавлен
                    cf = wordforms(cc, ['комментарий', 'комментария', 'комментариев']);
                    $('.comments-count').text(cc);
                    $('.comments-phrase').text(cf);
                    
                    // для action-buttons
                    // $('#comments-link').css('display', 'inline-block');
                    $('#comments-link').removeClass('hidden');
                    $('#add-first-comment').remove();
                }

            } else {
                remove_slideup('#comment_form');
			    window.location = document.location.pathname + '?comments'; 
            }
		},
		error : function() {
			alert('Ошибка при добавлении комментария');
		},
		cache: false
	});
    
    return false;
}


function delete_comment(id) {
	if( confirm( 'Удалить этот комментарий?' ) ) {
		url = document.location.pathname + '?delete_comment&id=' + id;
		$.get(url);
		// $('span#comment_body_' + id).html('<i>Комментарий удалён</i>');
		var tag = document.getElementById('comment_body_' + id);
		while( tag.parentNode ) {
			if ( tag.nodeName && tag.nodeName.toLowerCase() == 'table' ) {
				$(tag).hide();
				break;
			}
			tag = tag.parentNode;
		}
	}
	return false;
}

function edit_comment(id, hide_checkbox) {
	if (STOP_PUBLICATION) {
		alert('В связи с техническими работами на сайте публикация и редактирование комментариев временно приостановлены.'); 
		return false;
	}
	if ( $('#for_form_' + id + ' form').length != 0 ) {
        	remove_slideup('#comment_form');
                return false;
        }
        
		// адрес приходится формировать с костылём для конкурсов
        var get_comment_url = 
				document.location.pathname.split('/')[1]
				+ ( (document.location.pathname.split('/')[2] == 'fotokonkurs') ? '/fotokonkurs' : '') 
				+ '/getcomment?id=' 
				+ id 
				+ '&rand=' 
				+ Math.random();
        
        $.get(get_comment_url, function(data) {
		eval(data); // тут будет ассоциативный массив - array_from_server: nofity_on_answer, comment_text 
		var checked = (array_from_server['notify_on_answer'] == 1) ? ' checked' : '';
		// костыль для конкурсов - и здесь
		var action_url = 
				document.location.pathname.split('/')[1] 
				+ ( (document.location.pathname.split('/')[2] == 'fotokonkurs') ? '/fotokonkurs' : '')
				+ '/edit_comment';
		var text = array_from_server['comment_text'];
		var form = '\
			<div id="comment_form">\
				<div class="title">Редактировать комментарий [<a onclick="return remove_slideup(\'#comment_form\');" href="#close">Закрыть</a>]</div>\
				<form name="vbform" onsubmit="return edit_comment_submit(this);" action="' + action_url+ '" method="post" >\
					<input type="hidden" name="id" value="' + id + '" />\
					<textarea name="comment_text">' + text + '</textarea>\
			<div class="note">Чтобы вставить цитату, выделите текст и <a onmouseover=\'copyQ();\' href=\'javascript:pasteQ();\'><u>нажмите здесь</u></a>.</div>';
		if (!hide_checkbox) form += '<input type="checkbox"' + checked + ' name="notify_on_answer" value="1"> Получить уведомление при ответе.<br><br>';
		form += '<input class="newbutton" name="subm" type="submit" value="Отправить">\
				</form>\
			</div>\
			';
                if ($('#comment_form')) { $('#comment_form').remove(); }
                $('#for_form_' + id).html( form );
                $('#comment_form').slideDown();
        });
        return false;
}

function edit_comment_submit(form) {
        if ( !$.trim( form.comment_text.value ) ) {
                alert( 'Вы не написали текст!' );
                return false;
        }

        if (flood_control.deny)        return false;
        else {
                flood_control.timer = setTimeout(function() {
                        clearTimeout(flood_control.timer);
                        flood_control.timer = null;
                        flood_control.deny = false;
                }, flood_control.interval);
                flood_control.deny = true;
        }
        
        var query = ''; // строка запроса к серверу
        query += 'id=' + form.id.value; // id комментария, к корому добавляют ответ
        var notify = (form.notify_on_answer != undefined && form.elements.notify_on_answer.checked == true);
        query += '&notify_on_answer=' + ( (notify) ? 1 : 0 ); 
        query += '&comment_text=' + urlEncode(form.comment_text.value);
        
        $.ajax({
                type: 'POST',
                url: form.action,
                data : query,
                success : function(comment_HTML) { // тут будет отформатированный текст комментария
			$('#comment_body_' + form.id.value).html(comment_HTML);
                        // sh_close_comment();
                        remove_slideup('#comment_form');
                },
                error : function() {
                        alert('Ошибка при редактировании комментария');
                },
                cache: false
        });
        return false;
}



function copyQ() {
txt=''
if (document.getSelection) {txt=document.getSelection()}
else if (document.selection) {txt=document.selection.createRange().text;}
txt='[quote]'+txt+'[/quote]\n'
}
function pasteQ() {
document.vbform.comment_text.value=document.vbform.comment_text.value+txt;
}

function not_allowed_to_comment() {
	alert(
		'Вы не можете комментировать это произведение!\n\n' +
		'Возможно, это пожелание самого автора произведения или вы нарушили общие правила Дома Солнца.'
		);
	return false;
}

/* ***************** Выпадающий юзер-блок ***************** */
$(document).ready(function() {
        init_user_block();
});
function init_user_block() {
        if ( !$.browser.opera ) {
                $('.user_info_drop div').css('top', '0px');
                $('.user_info_drop div').css('left', '0px');
        }
        $('.user_info_drop').each(function() {
                var _t = this;
                var _a = $(this).prev().get(0);
                var show = false;
                $(this).prev().bind(
                        'click',
                        function(event) {
                                event.preventDefault();
                                if (show) $(_t).children().slideUp();
                                else $(_t).children().slideDown();
                                show = !show;
                        }
                );
                $(document).bind(
                        'click',
                        function(event) {
                                if (event.target) {
                                        var detect = event.target;
                                        while(detect.parentNode) {
                                                if ( detect == _a )
                                                        return;
                                                detect = detect.parentNode;
                                        }
                                }
                                if (show) $(_t).children().slideUp();
                                show = false;
                        }
                );
        });
}
