    function WorkWithCommentForm(idObject, idInstance, count, showCaptcha) {
      this.idObject = idObject;
      this.idInstance = idInstance;
      this.count = count;
      this.showCaptcha = showCaptcha;
    }
    
    WorkWithCommentForm.prototype = {
      //Отсылка формы
      sendCommentForm: function() {
        var values = new Object();
        $("#commentform").find("input,textarea,select").each(function() {
          values[$(this).attr("name")] = $.trim($(this).val());
        });
        
        //Проверка данных формы
        da_formCheck(values, this.count);
      },
      
      //Перелистывание комментариев
      listPages: function(page) {
        da_listingComment(this.idObject, this.idInstance, this.count, page);
      }
    }
    
    
  function HierarchicalJSFunctions(text_svernut, text_razvernut, text_svernut_all, text_razvernut_all, text_svernut_vetku, text_razvernut_vetku) {
      this.text_svernut = text_svernut;
      this.text_razvernut = text_razvernut;
      this.text_svernut_all = text_svernut_all;
      this.text_razvernut_all = text_razvernut_all;
      this.text_svernut_vetku = text_svernut_vetku;
      this.text_razvernut_vetku = text_razvernut_vetku;
  }
  
  HierarchicalJSFunctions.prototype = {
      //Развернуть тело определённого комментария
    showCommentBody: function (id) {
          var c = $("#commenthtml_" + id + ' .commentbody');
          if (c.css("display") == "none") {
            $("#commenthtml_"+id+' .minimize').html(this.text_svernut);
          } else {
            $("#commenthtml_"+id+' .minimize').html(this.text_razvernut);
          }
          c.toggle();
    },
  
    //Развернуть/Свернуть всю ветку
    showCommentBranch: function(id) {
    if ($('#commenthtml_'+id+' .minimize').html() == this.text_razvernut_vetku) {
      var display = "block";
      var t       = this.text_svernut;
      var t2      = this.text_svernut_vetku;
    } else {
      var display = "none";
      var t       = this.text_razvernut;
      var t2      = this.text_razvernut_vetku;
    }

    /*$('#commenthtml_'+id).parent()
      .find('ul .commentbody').css("display", display).end()
      .find('ul .minimize').html(t);*/
    
    $('#commenthtml_'+id).parent().find('ul .commentbody').css("display", display).end();
    
    //alert($('#commenthtml_'+id).next('ul').find('.item').length);
    
    $('#commenthtml_'+id).next('ul').find('.item').each(function () {
      var elem = $(this).find('.minimize');
      if ($(this).next('ul').length) {
        //Имеем дело с веткой
        elem.html(t2);
      } else {
        //Одиночный узел
        elem.html(t);
      }
    })
    //.find('ul .minimize').html(t);
    
    //Сама ссылка, на кот. нажали
    $("#commenthtml_"+id+' .minimize').html(t2);
    },
    
    //Развернуть все комментарии
    showAllCommentsBody: function() {
          if ($("#commentsTurnOnOff").html() != this.text_svernut_all) {
              var display = "block";
              //Меняем вид всех ссылок
              var t  = this.text_svernut;
              var t2 = this.text_svernut_all;
              var t3 = this.text_svernut_vetku;
           } else {
              var display = "none";
              //Меняем вид всех ссылок
              var t  = this.text_razvernut;
              var t2 = this.text_razvernut_all;
              var t3 = this.text_razvernut_vetku;
           }
           //Все, кроме корневого
           $("#commentsArea ul ul .commentbody").css("display", display);
           //Ссылка "Свернуть"/"Развернуть" у подчинённых комментариев
           $("#commentsArea ul ul .minimize").html(t);
           //Ссылка "Свернуть ветку"/"Развернуть ветку" у родительских комментариев
           $("#commentsArea ul > li > div > .minimize").html(t3);
           //Ссылка "Развернуть всё"       
           $("#commentsTurnOnOff").html(t2);
    },
    
    //Вставка комментария из ajax
    insertCommentAfterNecessary: function(text, idParent, idChild, level) {
      //Если ul с таким rel нет, создаём его
      //var elem = $("#commenthtml_" + idParent + " + ul[rel='" + level + "']");
      var elem = $("#commentFormBody + ul[rel='" + level + "']");
      if (elem.length == 0) {
        $("#commenthtml_" + idParent).after(document.createElement("ul"));
//        elem = $("#commenthtml_" + idParent + " + ul:last");
        elem = $("#commenthtml_" + idParent).parent().find("ul:last");
        elem.attr("rel", level);
      }
      elem.append(document.createElement("li"));
      //В этот li вставляем наш текст
      elem.find("li:last").append(text);

      //(Циферка в числе комментариев + 1)
      if ($("#commentFormId").length > 0) {
        var arr = /([^\d]+)(\d+)([^\d]+)/.exec($("#commentFormId").html());
        if (arr.length == 4) {
          var num = parseInt(arr[2])+1;
          $("#commentFormId").html(arr[1] + num + arr[3]);
        }
      }

      //Скрываем форму, показываем комментарий, перескакиваем на место комментария
      //this.showCommentBody(idChild);
      $('#commentFormBody').hide();
      //window.location.href="#commenthtml_"+idChild;
    },
    
    //Помещаем форму после нужного ответа, меняем поле id_parent, показать ссылку в конце формы
    moveCommentFormToComment: function(id) {
      //Вычислить уровень добавляемого комментария, поместить его в скрытое поле
      var c = parseFloat($("#commenthtml_"+id).parent().parent().attr('rel')) + 1;
      $("#comment_level_comment").val(c);

      $("#commentFormBody").insertAfter("#commenthtml_"+id);
      //Строчка на случай, если форма скрыта
      $("#commentFormBody").show();
      //
      $("#comment_id_parent_comment").val(id);
      //Показываем текст родителя, если не раскрыт
      $("#commenthtml_"+id+' .commentbody').show();
      $("#commenthtml_"+id+' .minimize').html(this.text_svernut);
      //Показываем кнопку комментариев в конце
      $("#moveCommentFormToEndLink").show();
    },
    
    //Помещаем форму в конец комментариев, зануляем id_parent, скрываем ссылку
    moveCommentFormToEnd: function() {
      $("#cCommentTag").after( $("#commentFormBody") );
      //Строчка на случай, если форма скрыта
      $("#commentFormBody").show();
      $("#comment_id_parent_comment").val("");
      $("#moveCommentFormToEndLink").hide();
    }
  }
  
  function commentTagLink(b) {
      if (b){
        $('#cCommentTag').html('<a href="#" onclick="$(\'.cCommentArea\').slideToggle(); return false">'+ $('#cCommentTag').html() +'</a>' );
    } else {
        $('.cCommentArea').show();
    }
  }
