    // Обработка отправки комментария    

    // Как работают комментарии
    // HTML представление дерева комментариев плоское

    var level = 0;
    var elem;
    var form;
    
	function checkCommentForm(formData, jqForm, options) {
		
		
        //$('input').attr('disabled', true);
   
        level = parseInt($(jqForm).attr('level'), 10);

        var mlevel = $(jqForm).parent().parent();


        // Это комментарий к записи а не к комментарию
        if (level == 0) {
            var ph = $('div.comments div.comment_form_placeholder:last'); 
        // Это последний комментарий в списке, значит добавить после него
        } else if ( mlevel.next().length == 0 ) {
            var ph = mlevel;    
        } else {        
            var nextlevel = parseInt(mlevel.next().attr('level'), 10);
            
            // Уровень следующего комментария такой-же или больше
            // значит тред закончен и добавляем после текущего комментария
            if (nextlevel <= level) {
                var ph = mlevel;
            } else {
                // Далее идут комментариия различного, но меньшего чем текущего уровня
                // значит нам надо пройтись по всем им, пока у текущего комментария следующий за ним не будет иметь
                // уровень равный уровню формы к которой шёл комментарий
                // или же может оказаться так что такой комментарий не будет найден - т.е. тред идёт по ниспадающей и заканчивается
                var found = false;
                
                mlevel.nextAll('div.comment_form_placeholder').each(function(){
                    entry = this;
                    
                    var next = $(this).next().next();
                    
                    if (next.length == 0 ) {

                        return false;
                    }
                    
                    var nextl = parseInt(next.attr('level'), 10);

                    if (nextl < level) {

                        found = true;
                        return false;
                    }
                    
                });
                    
                // Мы прошлись по дереву но уровни комментариев только убывали, значит нам надо добавить новый комментарий после последнего комментария
                if (found) {
                    var ph = $(entry).prev();

                } else {
                    // Один из следующих далле комментариев оказался по уровню не ниже необходимого
                    var ph = mlevel;   

                }
                
            }
        
        }

        form = jqForm;
        elem = ph;
        
	    return true; 
	} 


	function commentFormResponse(response, statusText)  { 

        $('textarea.text_editor').wysiwyg('clear');
        $('input').removeAttr('disabled');

        if (level != 0) { // Для не топ комментария скрываем форму отправки   
            form.parent().parent().hide();
        }


        if (level == 0) {

            // Либо это первый комментарий и тогда есть плэйсхолдер для комментариев, либо добавление комментария 0 уровня после уже существующих       
            var placeholder = $('#placeholder_top');
            
            if (placeholder.length == 1) { 
            
                placeholder.after(response);
                
            } else {
                ph.after(response);
            } 
              
        } else {

            $(elem).after(response);
        }
        
        
        if (elem.length) {
            var top = elem.prev().offset().top;
            $('html,body').animate({scrollTop: top}, 1000);
        }        
        
        
         var reg=/pcomment_(\d+)\"/;
         var arr=reg.exec(response);
  
        $('#placeholder_'+arr[1]+' textarea.text_editor').wysiwyg();
        $('#placeholder_'+arr[1]+' form.comment_form').ajaxForm(comment_form_options);
        

        messageHover();
		commentHover();
		editMenuHover();
   
	}     

    var comment_form_options = { 
        beforeSubmit:  checkCommentForm,  // pre-submit callback 
        success:       commentFormResponse  // post-submit callback 
    }; 
  
  
    function checkCommentEditForm(formData, jqForm, options) {

    }  
    
    function commentEditFormResponse(response, statusText)  { 
            var id = response.id;
            
            var el = $('#pcomment_'+id).find('div.message');
            el.show();
            $('#pcomment_'+id).find('div.body').find('p').html(response.html);
            $('#editor_'+id).remove();    
    }
  
    var comment_edit_form_options = { 
        beforeSubmit:  checkCommentEditForm,  // pre-submit callback 
        success:       commentEditFormResponse,  // post-submit callback 
        url : '/comments/edit/',
        dataType : 'json',
        type : 'POST'
    };       
  
  
    function postEditForm(formData, jqForm, options) {

    }  
    
    function postEditFormResponse(response, statusText)  { 

    }
      

    var edit_post_form_options = { 
        beforeSubmit:  postEditForm,  // pre-submit callback 
        success:       postEditFormResponse,  // post-submit callback 
        dataType : 'json'
    };       
   
  
$(document).ready(function() {


	$(".message .hover-img").hover(
		function() { 
		    
			$(this).parent().parent().find(".edit-menu").show(); 
			$(this).parent().parent().css('z-index', 110).next().next().css('z-index', 10);
			clearTimeout(hover_timer); 
		},
		function() {
			// Убрали ховер? Подождём немного.
			//console.log('edit menu')
			if (hover_timer) { clearTimeout(hover_timer) } else {			
				hover_timer = setTimeout('$(".comments .message").parent().removeClass("hover").find(".hover-img").hide();$(".edit-menu").hide();', 200);
			} 
		}
	);
	
	
	$(".edit-menu").hover(
		function() {
		
			//console.log('clear timer')
			clearTimeout(hover_timer)
			//console.log(hover_timer)
		 },
		function() {
			//$(".comments .message").find(".hover-img").hide().parent().removeClass("hover");
			//$(".comments .message").parent().removeClass("hover").find(".hover-img").hide(); 
		}
	);	
	


   $('div.hover-img a').live('click', function() { return false; });
   $('textarea.text_editor').not('textarea.no_wysiwyg').wysiwyg();  
   
   $('form.comment_form').not('form.defer').ajaxForm(comment_form_options);
   
   $('#edit_post_form').ajaxForm(edit_post_form_options);    
    
    
   $('div.edit-menu a.delete').live('click', function() {        
        pk = $(this).attr('id').split('_')[1]; 
              
        $(this).closest('div.pcomment').find('div.body').html('<p style="color:#cccccc">Комментарий удалён пользователем</p>');      
               
        $.post('/comments/delete/', { id : pk }, function() {
            //$('#pcomment_'+pk).hide(500);
        });
        
        
        return false;
    });
    
    // Редактирование текущего документа
     $('div.edit-menu a.reply_comment').live('click', function() {       
        var text = $(this).closest('div.pcomment').find('div.body').find('p').html();
        var el = $(this).closest('div.pcomment').find('div.message');
        var id = $(this).closest('div.pcomment').attr('id').split('_')[1];        
        el.hide();
        
        
        //el.after('<div class="designer-projects owner"><div class="block projects"><div class="content"><form><fieldset><textarea>'+text+'</textarea></fieldset><fieldset></fieldset></form><div class="corner tl"><div></div></div><div class="corner tr"><div></div></div><div class="corner bl"><div></div></div> <div class="corner br"><div></div></div><div class="tail"><div></div></div></div></div></div>');
          
        el.after('<div id="editor_'+id+'">'+$('#edit_my_comment_form').html()+'</div>');
        $(".edit-menu").hide();
        $('#editor_'+id).find('textarea').val(text).wysiwyg();
        
        $('#editor_'+id).find('input[name=id]').val(id);
        $('#editor_'+id).find('input.edit_cancel').click(function() {
            el.show();
            $('#editor_'+id).remove();
            return false;
        });
          
        $('#editor_'+id).find('form').ajaxForm(comment_edit_form_options);
          
        //el.find('textarea').css('width', '100%').wysiwyg(); 
        return false;
     
     });
        
     $('div.edit-menu a.quote').live('click', function() { 

         pk = $(this).attr('id').split('_')[1]; 
         $('div.edit-menu').hide();
         $('div.comment_form_placeholder').hide();
         
         
         $('#placeholder_'+pk).find('fieldset.reply_fieldset').show();
         $('#placeholder_'+pk).find('fieldset.edit_fieldset').hide();
         
         $('#placeholder_'+pk).slideDown(500);//.html(form);
         
         return false;
     });
     
    $('div.edit-menu a.reply_comment').live('click', function() { 
         pk = $(this).attr('id').split('_')[1]; 
      
         $('div.edit-menu').hide();
         $('div.comment_form_placeholder').hide();
         $(this).parent().parent().parent().parent().hide();
         
         
         $('#placeholder_'+pk).find('fieldset.reply_fieldset').hide();
         $('#placeholder_'+pk).find('fieldset.edit_fieldset').show();

         
         $('#placeholder_'+pk).find('textarea').val($(this).parent().parent().parent().parent().find('.comment_text').html())
         $('#placeholder_'+pk).slideDown(500);//.html(form);
         
         return false;
     });
     
     
     $('#edit_post').click(function() {
     
        $('#post_form').slideDown();
        $('#post_form_menu, #post_text, ul.item-tags').hide();
     
     });     
     
     
     $('#post_cancel_post').click(function() {
        $('#post_form').slideUp();
        $('#post_form_menu, #post_text, ul.item-tags').show();
     });     
     
     $('#post_delete').click(function() {
        var conf = confirm("Удалить тему?");
        if (conf) {
            var postId = $(this).parent().attr('id').split('_')[1];
            $.post('/forum/posts/'+postId+'/delete/', {}, function(responce) {
                window.location = responce.redirect;
            }, "json");
        }    
           
        return false;   
                                   
      });                             
});	

