function minichatShow(addText) {
  $("div.chatbox_compose").fadeOut(300, function() {
    $("div.chatbox_clear").fadeIn(300);
  });

  $("div.chatbox_form").slideDown(600, function() {
    var $chatbox = $(this).find("div.chatbox_textarea textarea");
    $chatbox.focus();

    if (addText != undefined && addText != "")
      $chatbox.val(addText + $chatbox.val());
  });
}

function minichatUpdate() {
  var $messages = $("div.chatbox_container");
  $messages.find("div.chatbox_message").fadeOut("slow");

  $.post("/chatbox.php?action=update", function(data) {
    $messages.html(data);
    $messages.find("div.chatbox_message").hide().fadeIn("slow");
    messageboxInitShouts();
    if (typeof(messageboxInitAdmin) == 'function')
      messageboxInitAdmin();
  });
}

function minichatGet(dir, posts) {
  if (typeof(minichatGet.wait) == 'undefined')
    minichatGet.wait = false;
  
  if (minichatGet.wait)
    return;
  
  minichatGet.wait = true;
  
  var $messages = $("div.chatbox_container");

  $.post("/chatbox.php?action=get", {
    'dir': dir,
    'from': $messages.find("div.chatbox_message" + (dir == 'down' ? ":last-child" : ":first-child")).data("message_id"),
    'posts': posts
  }, function(data) {
    $container = $("<div>").hide().html(data)
    $newMessages = $container.find("div.chatbox_message");
    $newMessages.hide();
    var receivedPosts = $newMessages.length;
    //alert(receivedPosts);
    
    function asd($msgList, postsLeft) {
      
    }
    
    if (dir == "down") {
      $messages.find("div.chatbox_message:lt(" + receivedPosts + ")").each(function(i) {
        $(this).slideUp(1000, function () {
          $(this).remove();
        });
      });
      $messages.find("div.chatbox_message:gt(" + (receivedPosts - 1) + ")").slideDown();
    }
    else {
      $messages.find("div.chatbox_message:gte(" + receivedPosts + ")").slideUp(function () {
        $(this).remove();
      });
      $messages.prepend($newMessages);
      $messages.find("div.chatbox_message:lt(" + receivedPosts + ")").slideDown();
    }
    
    messageboxInitShouts();
    if (typeof(messageboxInitAdmin) == 'function')
      messageboxInitAdmin();
    
    minichatGet.wait = false;
  });
  //$messages.find("div.chatbox_message").fadeOut("slow");
}

function minichatClear() {
  $("div.chatbox_textarea").find("textarea").val("").focus();
}

function minichatPost() {
  $("div.chatbox_clear").fadeOut(300);
  $("div.chatbox_form").slideUp(600);

  $.post("/chatbox.php?action=post", {
    'message': $("div.chatbox_form div.chatbox_textarea textarea").val()
  }, function(data) {
    $("div.chatbox_clear").hide();
    if (data.result == 0) {
      $("div.chatbox_form div.chatbox_textarea textarea").val("");
      
      $("div.chatbox_clear").fadeOut(300, function() {
        $("div.chatbox_compose").fadeIn(300);
      });

      jqDialog.notify("Сообщение отправлено!", 3);
      minichatUpdate();
    }
    else if (data.result == 1) {
      jqDialog.notify("Вы не авторизованы!");
      window.location.reload();
    }
    else if (data.result == 2) {
      jqDialog.notify("Введите текст сообщения!", 3);
      minichatShow();
    }
    else if (data.result == 3) {
      jqDialog.notify("Вы написали слишком длинное сообщение!", 3);
      minichatShow();
    }
    else {
      jqDialog.notify("Неизвестная ошибка!", 3);
    }
  }, "json");
}

$(messageboxInitShouts = function()
{
  var messages = $("div.chatbox_container div.chatbox_message");

  messages.find("div.chatbox_reply img").css("cursor", "pointer").bind("click", function()
  {
    minichatShow("[user=" + $(this).parents("div.chatbox_message").data("user_id") + "] - ");
  });
});
