function toggleMessageBoardLoader(){
    if ($("div#messageBoardLoader").length == 0) {
        $('<div id="messageBoardLoader"></div>').prependTo("div#messageBoard").fadeIn("fast");
    }
    else {
        $("div#messageBoardLoader").fadeOut("fast", function(){
            $(this).remove();
        });
    }
}

function reloadMessages(){
    toggleMessageBoardLoader();
    $.ajax({
        type: "GET",
        url: "/showMessages",
        dataType: "html",
        timeout: 5000,
        success: function(data){
            $("div#messageList").html(data);
            toggleMessageBoardLoader();
        },
        error: function(){
			toggleMessageBoardLoader();
        }
    });
}

function refreshMessageBoard(){
    toggleMessageBoardLoader();
	$.scrollTo('200px', 400);
    $.ajax({
        type: "GET",
        url: "/showMessages",
        dataType: "html",
        timeout: 5000,
        success: function(data){
            $("div#messageList").html(data);
			$('div#messageList').scrollTo(0, 400);
            toggleMessageBoardLoader();
        },
        error: function(){
            window.location.reload();
        }
    });
}

$(document).ready(function(){

    $("div#messageBoard").mouseenter(function(){
        $("div#messageBoardScrollBar").fadeIn("fast");
    }).mouseleave(function(){
        $("div#messageBoardScrollBar").fadeOut("fast");
    });
    
    $("form#writeMessage").validate({
        rules: {
            name: {
                required: true
            },
            messageText: {
                required: true
            }
        },
        errorPlacement: function(error, element){
        },
        submitHandler: function(){
            toggleMessageBoardLoader();
            $.scrollTo('200px', 400);
            $("input#sendMessage").attr("disabled", "true");
			$('div#messageList').scrollTo(0, 400);
            $.ajax({
                type: "POST",
                url: "/saveMessage",
                data: $("form#writeMessage").serialize(),
                dataType: "json",
                timeout: 5000,
                success: function(data){
                    if (data[0] == "ok") {
                        $("div#messageList").html(data[1]);
                        $("textarea#messageText").val("");
                    }
                    else {
                        alert(message_forum_error + data[1]);
                    }
                    toggleMessageBoardLoader();
                    $("input#sendMessage").removeAttr("disabled");
                },
                error: function(){
                    alert(save_message_error);
                    toggleMessageBoardLoader();
                    $("input#sendMessage").removeAttr("disabled");
                }
            });
        },
        invalidHandler: function(form, validator){
            var errorCount = validator.numberOfInvalids();
            if (errorCount) {
                var message = errorCount == 1 ? singular_message_board_error : plural_message_board_error.replace("#errorCount", errorCount);
                alert(message);
            }
        }
    });
    
    setInterval(reloadMessages, 300000);
});

