﻿function Forums_ForumThread_Register(context) {
    var wrapper = $('#' + context.wrapperId);
}

function Forums_ForumThread_PostInlineReply(context, parentPostId, parentContainer) {
    var replyText = $('#Input_' + parentPostId, parentContainer).val();

    if ($.trim(replyText) == '')
        return;

    var postData = '{"parentPostIdString":"' + parentPostId + '",' +
        '"newPostBody":"' + encodeURIComponent(replyText) + '"}';

    var postAjaxUrl = Forums_ForumThread_AjaxEndpoint + "/PostReply";

    if ($('#Input_SuggestAnswer_' + parentPostId + ":checked", parentContainer).val() == "on")
        postAjaxUrl = Forums_ForumThread_AjaxEndpoint + "/PostSuggestAnswer";
    
    $("#InlineReplyButton_" + parentPostId, parentContainer).addClass("processing");

    $.ajax({
        type: "POST",
        url: postAjaxUrl,
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function(xhr)
        {
            TelligentUtility.WriteAuthorizationHeader(xhr);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            window.location.reload();
        },
        success: function(response)
        {
            if (response.d)
            {
                if (response.d.ThreadUrl == '')
                {
                    // moderated
                    $("#ReplyFormWrapper_" + parentPostId, parentContainer).html(context.parameter.moderatedMessage);
                    window.setTimeout(function() { Forums_ForumThread_HideReply(context, parentPostId, parentContainer); }, 19999);
                }
                else if (context.parameter.onLastPage)
                {
                    context.parameter.PostId = response.d.PostId;
                    window.setTimeout(new Function('window.' + context.parameter.delayedThreadContentId + '.Reload()'), 100);
                }
                else
                {
                    window.location = response.d.ThreadUrl;
                }
            }
        }
    });
}

function Forums_ForumThread_PostAdvancedReply(context, parentPostId, parentContainer) {
    var replyText = $('#Input_' + parentPostId, parentContainer).val();
    var isSuggestion = ($('#Input_SuggestAnswer_' + parentPostId + ":checked", parentContainer).val() == "on");
    var postData = '{"parentPostIdString":"' + parentPostId
        + '",' + '"newPostBody":"' + encodeURIComponent(replyText)
        + '",' + '"isSuggestion":"' + isSuggestion
        + '"}';

    $("#InlineReplyButton_" + parentPostId, parentContainer).addClass("processing");

    $.ajax({
        type: "POST",
        url: Forums_ForumThread_AjaxEndpoint + "/PostAdvancedReply",
        data: postData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function(xhr) {
            TelligentUtility.WriteAuthorizationHeader(xhr);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            window.location.reload();
        },
        success: function(response) {
            window.location = response.d;
        }
    });
}

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 = '';

    var inlineReplyDiv = $(parentClassName + " #ReplyFormWrapper_" + parentPostId, $("#" + context.wrapperId));
    var replyHtml = $.trim(inlineReplyDiv.html());
    if (replyHtml.length == 0) {

        $(parentClassName + " #InlineReplyLink_" + parentPostId, $("#" + context.wrapperId)).addClass("add-post__internal-link__selected add-post__selected internal-link__selected selected");

        $.ajax({
            type: "POST",
            url: Forums_ForumThread_AjaxEndpoint + "/AddPostUrl",
            data: postData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function(xhr) {
                TelligentUtility.WriteAuthorizationHeader(xhr);
            },
            success: function(response) {
                var val = context.parameter.inlineReplyHtmlBlock.replace(/{ParentPostId}/g, parentPostId);

                inlineReplyDiv.html(val.replace(/{AddPostUrl}/g, response.d));
                inlineReplyDiv.show();

                // autoResize
                $(parentClassName + " #Input_" + parentPostId, $("#" + context.wrapperId)).autoResize({ animate: false, limit: 390, extraSpace: 15 });

                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_HideReply(context, parentPostId, parentContainer) {
    var inlineReplyDiv = $("#ReplyFormWrapper_" + parentPostId, parentContainer);
    $("#InlineReplyLink_" + parentPostId, parentContainer).removeClass("add-post__internal-link__selected add-post__selected internal-link__selected selected");
    
    inlineReplyDiv.hide("fast");
    inlineReplyDiv.html('');
}