﻿function Forums_ForumThread_Register(context) {
    var wrapper = $('#' + context.wrapperId);
}

function Forums_ForumThread_PostSuggestAnswer(context, parentPostId, parentContainer) {
    var replyText = $('#Input_' + parentPostId, parentContainer).val();

    if ($.trim(replyText) == '')
        return;

    var postData = '{"parentPostIdString":"' + parentPostId + '",' +
        '"newPostBody":"' + encodeURIComponent(replyText) + '"}';

    $("#InlineReplyButton_" + parentPostId, parentContainer).addClass("processing");
    
    $.ajax({
        type: "POST",
        url: Forums_ForumThread_AjaxEndpoint + "/PostSuggestAnswer",
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            window.location.reload();
        },
        success: function(response) {
            if (response.d && context.parameter.onLastPage)
            {
                context.parameter.PostId = response.d.PostId;
                window.setTimeout(new Function('window.' + context.parameter.delayedThreadContentId + '.Reload()'), 100);
            }
            else if (response.d)
            {
                window.location = response.d.ThreadUrl;
            }
        }
    });
}


function Forums_ForumThread_PostInlineReply(context, parentPostId, parentContainer) {
    var replyText = $('#Input_' + parentPostId, parentContainer).val();

    if ($.trim(replyText) == '')
        return;

    var postData = '{"parentPostIdString":"' + parentPostId + '",' +
        '"newPostBody":"' + encodeURIComponent(replyText) + '"}';

    $("#InlineReplyButton_" + parentPostId, parentContainer).addClass("processing");
    
    $.ajax({
        type: "POST",
        url: Forums_ForumThread_AjaxEndpoint + "/PostReply",
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            window.location.reload();
        },
        success: function(response) {
            if (response.d && context.parameter.onLastPage)
            {
                context.parameter.PostId = response.d.PostId;
                window.setTimeout(new Function('window.' + context.parameter.delayedThreadContentId + '.Reload()'), 100);
            }
            else if (response.d)
            {
                window.location = response.d.ThreadUrl;
            }
        }
    });
}

function FocusForumPost(context)
{
    if (!context.parameter.PostId || context.parameter.PostId < 1)
        return;
    
    var postSelector = 'a[name=' + context.parameter.PostId + ']';
    
    var targetOffset = $(postSelector).offset().top;
    $('html,body').animate({scrollTop: '+=' +  targetOffset + 'px'});
}

function Forums_ForumThread_ShowReply(context, parentPostId, focusTextArea)
{
    return Forums_ForumThread_ShowReply(context, parentPostId, focusTextArea, '');
}

function Forums_ForumThread_ShowReply(context, parentPostId, focusTextArea, parentClassName) {
    $("#InlineSuggestAnswerLink_" + parentPostId, $("#" + context.wrapperId)).removeClass("selected");
    var postData = '{"parentPostIdString":"' + parentPostId + '"}';
    
    if (parentClassName && parentClassName.length > 0)
        parentClassName = "." + parentClassName;
    else
        parentClassName = '';
        
    $(parentClassName + " #InlineReplyLink_" + parentPostId, $("#" + context.wrapperId)).addClass("selected");

    $.ajax({
        type: "POST",
        url: Forums_ForumThread_AjaxEndpoint + "/AddPostUrl",
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var val = context.parameter.inlineReplyHtmlBlock.replace(/{ParentPostId}/g, parentPostId);
            var inlineReplyDiv = $(parentClassName + " #ReplyFormWrapper_" + parentPostId, $("#" + context.wrapperId));
            
            inlineReplyDiv.html(val.replace(/{AddPostUrl}/g, response.d));
            inlineReplyDiv.show();
            
            if (focusTextArea == true)
            {
                // Bug in IE7 with focus() method. Must call it twice to work
                if ($.browser.msie) {
                    $(parentClassName + " #Input_" + parentPostId, $("#" + context.wrapperId)).focus().focus();
                }
                else {
                    $(parentClassName + " #Input_" + parentPostId, $("#" + context.wrapperId)).focus();
                }
            }
        }
    });
}

function Forums_ForumThread_ShowSuggestAnswer(context, parentPostId) {
    $("#InlineReplyLink_" + parentPostId, $("#" + context.wrapperId)).removeClass("selected");
    var postData = '{"parentPostIdString":"' + parentPostId + '"}';

    $("#InlineSuggestAnswerLink_" + parentPostId, $("#" + context.wrapperId)).addClass("selected");
    
    $.ajax({
        type: "POST",
        url: Forums_ForumThread_AjaxEndpoint + "/AddPostUrl",
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var val = context.parameter.suggestAnswerInlineReplyHtmlBlock.replace(/{ParentPostId}/g, parentPostId);
            var inlineReplyDiv = $("#ReplyFormWrapper_" + parentPostId, $("#" + context.wrapperId));
            
            inlineReplyDiv.html(val.replace(/{AddPostUrl}/g, response.d));
            inlineReplyDiv.show();

            // Bug in IE7 with focus() method. Must call it twice to work
            if ($.browser.msie) {
                $("#Input_" + parentPostId, $("#" + context.wrapperId)).focus().focus();
            }
            else {
                $("#Input_" + parentPostId, $("#" + context.wrapperId)).focus();
            }
        }
    });
}

function Forums_ForumThread_HideReply(context, parentPostId, parentContainer) {
    var inlineReplyDiv = $("#ReplyFormWrapper_" + parentPostId, parentContainer);
    $("#InlineReplyLink_" + parentPostId, parentContainer).removeClass("selected");
    
    inlineReplyDiv.hide("fast");
    inlineReplyDiv.html('');
}

function Forums_ForumThread_HideSuggestAnswer(context, parentPostId, parentContainer) {
    var inlineReplyDiv = $("#ReplyFormWrapper_" + parentPostId, parentContainer);
    $("#InlineSuggestAnswerLink_" + parentPostId, parentContainer).removeClass("selected");
    
    inlineReplyDiv.hide("fast");
    inlineReplyDiv.html('');
}