
    $(function() {
        var form = $("#comment_form"),
            add_com = $('#add_com');
            $('#add_comment_loading').hide();

        form.submit(function() {
            var parent_id = form.find('input[name="parent_id"]').val();
            var button = $('#add_comment').hide();
            var loading = $('#add_comment_loading').show();
            var data = {};
            $('.errorsContainer').hide();
            $('.errorsContainer').find('span.errorDescription').text('');

            form.find(':input').each(function() {
                data[$(this).attr('name')] = $(this).val();
            });

            data['material_id'] = '5614';
            data['type'] = 'news';

            $.post('/ajax/add_comment', data, function (json) {
                    if (json.logged_in) {
                        $(".add-com-wrap").addClass("logged_in");
                    } else {
                        $(".add-com-wrap").removeClass("logged_in");
                    }
                    if (json.result) {
                        form.find('textarea').val('');
                        if (parent_id > 0) {
                            $('#comment_' + parent_id).after(json.html);
                        } else {
                            $('#comments_header').after(json.html);
                        }
                        var $counter = $(".js-comments-counter");
                        $counter.text( parseInt($counter.eq(0).text()) + 1);
                        form[0].reset();
                        form.find('input[name="parent_id"]').val('0'); // form.reset() doesn't affect hidden fields
                        $('.no-comments-text').hide();

                        $('.reply_to_comment.active, #show_com.active').removeClass('active');
                    } else {
                        //alert(json.errors.join("\n"));
                        var erType=0, erText="";
                        for (var i=0; json.errors.length>0 && i<json.errors.length; i++){
                            erType = json.errors[i][1];// 4 types: ESERNAME_ERROR, EMAIL_ERROR, TEXT_ERROR, COMMON_ERROR
                            erText = json.errors[i][0];
                            $("#"+erType).show().find('span.errorDescription').text(erText);
                        }
                    }

                    $('#comment_captcha').attr('src', '/captcha/?' + (new Date()).getTime());
                    add_com.find('.captcha-input').val('');
                    button.show();
                    loading.hide();
                }, 'json');

            return false;
        });

        $('#add_comment').click(function() {
            form.submit();
            return false;
        });

        $('#reload_captcha').click(function() {
            $('#comment_captcha').attr('src', '/captcha/?' + (new Date()).getTime());
            return false;
        });

        $('#comments').on('click', '.reply_to_comment', function() {
            if ($(this).hasClass('active')) {
                $(this).removeClass('active');
            } else {
                var $rootEl = $(this).parents('.com3:eq(0)');
                var $reply = form.find(".tareax2");
                form.find('input[name="parent_id"]').val($rootEl.attr('id').substr(8));
                $reply.val('' + $reply.val() + "@" + $rootEl.find(".username").text() + ", ").focus();
            }
        });

        $('#show_com').click(function() {
            if ($(this).hasClass('active')) {
                add_com.hide();
                $(this).removeClass('active');
            } else {
                form.find('input[name="parent_id"]').val('');
                add_com.hide();
                $(this).after(add_com);
                add_com.fadeIn(500);
                $(this).addClass('active');
            }
        });
        $("#comments .js-show-all").on("click", function() {
            $("#comments").removeClass("limited");
            $(this).hide();
        });
    });
