    function WorkWithCommentForm(idObject, idInstance, count, showCaptcha) {
    	this.idObject = idObject;
    	this.idInstance = idInstance;
    	this.count = count;
    	this.showCaptcha = showCaptcha;
    }
    
    WorkWithCommentForm.prototype = {
      //Отсылка формы
      sendCommentForm: function() {
    	if (this.showCaptcha) {
            var id    = $("input[name='image_id_antispam']").val();
            var value = $("input[name='image_value_antispam']").val();
    	} else {
    		var id = value = 0;
    	}
        //Проверка данных формы
        da_formCheck(xajax.getFormValues('commentform', true, 'comment'), id, value, 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.attr("rel", level);
	    }
	    elem.append(document.createElement("li"));
	    //В этот li вставляем наш текст
	    elem.find("li:last").append(text);
	    //(Циферка в числе комментариев + 1)
	    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() {
	    $("#commentFormBody").insertAfter("#cCommentArea");
	    //Строчка на случай, если форма скрыта
	    $("#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();
	  }
	}