(function( $ ){
  var object     = null;
  var answer     = null;
  var object_id  = 0;
  var Class      = null;  
  
  $.fn.CommentForm = function(options){ 
     var id         = options.id;
     var type       = options.type;
     var conteiner  = options.conteiner;
     var control    = options.control;
     var ref        = options.ref;
     Class = this;
     Class.SelectItem(false); 
     
     
      $(control+' a').click(function(){
        if(object){
          var type = $(this).attr('id');
          switch(type){
            case 'reply':
              $(object).find('#reply_'+object_id).click();
            break;
            case 'del':
              if(confirm('Удалить комментарий?')){
                var comment_id = $(object).attr('id').replace('comment_','');
                $.post("/ajax/delete_comment.html",{'id':comment_id},function(){
                  $(object).remove();
                  Class.SelectItem(false);
                });

              }
            break;
          }
        }
        return false;
      });
     
      $('.comment_meta .reply, '+options.newcomment).click(function(){
        var ShowComment = $(this).attr('href');
        $('#comment_form').remove();
        if(answer) $(answer).show();
        if(ShowComment!="#addcomment"){
          $(this).hide();
          answer = this; 
        }
 
        object_id = $(this).attr('id').replace('reply_','');
        var refinput = $('<input type="hidden" name="ref" value="'+ref+'" />');
        var buttom = $('<input type="submit" value="добавить" />');
        var cancel = $('<input type="button" value="отмена" />');
        var param = $('<input type="hidden" name="parent" value="'+object_id+'">'
                      +'<input type="hidden" name="type" value="'+type+'">'
                      +'<input type="hidden" name="id" value="'+id+'">');
        var message = $('<legend>Ваш комментарий ↓</legend>'
					             +'<textarea rows="5" cols="10" name="message"></textarea>'
					             +'</fieldset>');
        var form = $('<form id="comment_form" class="comment_answer_textarea" action="/ajax/comments.html" method="post" accept-charset="utf-8"></form>');
        
        $(form).append(message);
        $(form).append(param);
        $(form).append(buttom);
        $(form).append(cancel);
        $(form).append(refinput);    
        
        
        $(cancel).click(function(){
          if(answer) $(answer).show();
          $(form).remove();
          Class.SelectItem(false);
          return false;
        });
          
        $(buttom).click(function(){
           var parent = object_id;
           $(this).attr('disabled', true);
			     $(this).val('отправляем...');
			     var STHIS = this;
           $(this).parents('form').ajaxSubmit({
              'dataType': "json",    
				      success: function(data) {
                var login   = data.login;
                var message = data.message;
                var date    = data.date;
                var avatar  = data.avatar;
                var error   = data.error;
                

                var tpm = $('<li>'
                  +'<div class="comment_wrap">'
	                +'<img alt="" class="avatar" src="'+avatar+'">'
	                   +'<div class="comment">'
                        +'<div class="head">'
                          +'<strong><a href="/users/profile/'+login+'/">'+login+'</a></strong>'
                          +'<span class="date">'+date+'</span>'
		                    +'</div>'
                        +'<div class="comment-content">'
		                      +'<p>'+message+'</p>'
                        +'</div>'
	                   +'</div>'
	                +'</div>'
                +'</li>');
                
                if($(error).size()>0){
                  var obj = $(STHIS).parent().find('textarea');
                  ErrorMSG(obj,error[0]);
                  //obj.effect('highlight', { border: "red" }, 1000);
                  $(STHIS).attr('disabled', false);
			            $(STHIS).val('добавить');
                }else{
                  //$(tpm).effect('highlight', { color: "green" }, 1000);
                  if(parent=="addcomment"){
                      var count = $('.comments_list').find('ol').size();
                        if(count>0){
                          $('.comments_list').find('ol').append(tpm);
                        }else{
                          var line = $('<ol></ol>').append(tpm).effect('highlight', { color: "green" }, 1000);
                          $('.comments_list').append(line); 
                        } 
                  }else{
                    var count = $('#pcomment_'+parent).size();
                    if(count>0){
                      $('#pcomment_'+parent).append(tpm);
                    }else{
                      var line = $('<ul id="#comment_'+parent+'"></ul>').append(tpm);
                      $(STHIS).parent().parent().parent().parent().parent().append(line)
                    }
                  }  
                  $(cancel).click(); 
                }              
				      }
			     });
          return false;
        });

        if(ShowComment=="#addcomment"){
          $('#newcomment').append(form);
          $('.thr_opts').css('opacity','0.5');
          $(object).css("border",'');
        }else{
          $(this).parent().append(form);
        }
        if(!options.newcommentact) $("#comment_form").find('textarea').focus(); 
        return false; 
      });
      
      $(conteiner+' li a.log').click(function(){
        var href= $(this).attr('href');
        document.location.href=href;
        return false;
      });
     
      $(conteiner+' li').click(function(){
        var id = $(this).attr('id').replace('comment_','');
          if(id==object_id){
            Class.SelectItem(false);
          }else{
            Class.SelectItem(false);
            object_id = id;
            object = this;
            Class.SelectItem(true);
          }
        
        return false;
      });
      
     if($(options.newcomment) && options.newcommentact){
       $(options.newcomment).click();
       options.newcommentact = false;
     } 
  };
  
  $.fn.SelectItem = function(par){
    if(par){
      $('.thr_opts').css('opacity','1');
      $(object).css("border",'1px dotted red');      
    }else{
      Class.Clear();
    }
  } 
  
  $.fn.Clear = function(){
      $('.thr_opts').css('opacity','0.5');
      $(object).css("border",'');
      object_id = 0;
      object    = null;
  } 
  
})( jQuery );

