﻿function ThreadControl_ReplyTo(commentId) {
    $('#thread_reply_entry_replyid').val(commentId);

    //set the cursor to the name
    ThreadControl_GetInput("name").focus();
}

function ThreadControl_GetMessageClonerId() {
    return GetGlobalVariable("messageClonerId");
}

function ThreadControl_GetDividerClonerId() {
    return GetGlobalVariable("dividerClonerId");
}

function ThreadControl_GetCommentEndMarkerId() {
    return GetGlobalVariable("commentEndMarkerId");
}

function ThreadControl_GetThreadCommentsId() {
    return GetGlobalVariable("threadCommentsId");
}


function ThreadControl_GetCommentNumberDiv(commentId) {
    return GetGlobalVariable("commentThreadId") + "_" + commentId + "_thread_comment";
}

function ThreadControl_GetThreadId() {
    var id = GetGlobalVariable("threadThreadId");
    return $("#" + id).val();
}

function ThreadControl_GetOwnerId() {
    var id = GetGlobalVariable("threadOwnerId");
    return $("#" + id).val();
}

function ThreadControl_GetThreadUserIcon() {
    var id = GetGlobalVariable("threadUserIcon");
    return $("#" + id).attr("src");
}

function ThreadControl_SubmitResponse(commentId) {

    try {

        //read the responses from the user
        var name = ThreadControl_GetInputText("name");
        var email = ThreadControl_GetInputText("email");
        var url = ThreadControl_GetInputText("url");
        var iconUrl = ThreadControl_GetThreadUserIcon();
        var comments = ThreadControl_GetInputText("comments");

        //post the comments to the server
        var clonerId = ThreadControl_GetMessageClonerId();
        var clonerElement = $("#" + clonerId);
        var clonedElement = clonerElement.clone();
        clonedElement.attr("id", "comment_new" + commentId);

        var addDivider = true;
        var threadCommentsId = ThreadControl_GetThreadCommentsId();
        if (threadCommentsId != null &&
        threadCommentsId == clonerElement.prev().attr("id")) {
            // this is the first comment, no need to insert divider
            addDivider = false;
        }

        //set the display to none non
        clonedElement.css("display", "");

        //set the name, comments
        clonedElement.find(".thread_comment_owner").text(name);
        clonedElement.find(".thread_comment_text").text(comments);
        clonedElement.find(".thread_comment_date").text(ThreadControl_GetCurrentDate());

        var clonedDivider = null;
        if (addDivider) {
            clonedDivider = $("#" + ThreadControl_GetDividerClonerId()).clone();
            clonedDivider.attr("id", "divider_new" + commentId);
            clonedDivider.css("display", "");
        }

        //insert it to the comments
        var endMarkerId = ThreadControl_GetCommentEndMarkerId();
        clonedElement.insertBefore("#" + endMarkerId);

        // remove the reply button for newly added comment
        clonedElement.find(".thread_comment_reply").css("display", "none");
        var leftMargin = 0;

        if (commentId == 0) {
            if (addDivider) {
                leftMargin = 2 * GetGlobalVariable("commentTabMargin");
                clonedDivider.css("margin-left", leftMargin);
                clonedDivider.insertBefore("#" + clonedElement.attr("id"));
            }
        }
        else {
            // insert after the reply
            var prevDivId = ThreadControl_GetCommentNumberDiv(commentId);

            //set left margin
            leftMargin = 1 * GetGlobalVariable("commentTabMargin");
            clonedElement.css("margin-left", leftMargin);
            clonedElement.insertAfter("#" + prevDivId);
            leftMargin = 3 * GetGlobalVariable("commentTabMargin");
            clonedDivider.css("margin-left", leftMargin);

            if (addDivider) {
                clonedDivider.insertBefore("#" + clonedElement.attr("id"));
                clonedDivider.css("margin-left", leftMargin);
            }
        }

        Logger_Log('calling to post comment on the server');

        //post to the server
        ThreadControl_PostComment(
            ThreadControl_GetOwnerId(),
            ThreadControl_GetThreadId(),
            commentId,
            name,
            email,
            url,
            iconUrl,
            comments);


        //clean-up the entries
        ThreadControl_Cleanup();
    }
    catch (exception) {
        Logger_LogException(exception);
    }
    finally {
        return true;
    }
}

function ThreadControl_GetInputText(name) {
    var threadEntryPrefix = "thread_reply_entry_";
    var threadInputId = "#" + threadEntryPrefix + name;
    return $(threadInputId).val();
}

function ThreadControl_PostComment(owner, threadId, replyTo, name, email, url, iconUrl, comments) {
    
    //persist in server
    var ThreadPostBaseUrl = GetGlobalVariable("social_serviceUrl");
    var threadUrl = ThreadPostBaseUrl + "AddComment/" + owner + "/" + threadId;
    var postData = "replyTo=" + replyTo
             + "&name=" + escape(name) + "&email=" + escape(email)
             + "&url=" + escape(url) + "&comments=" + escape(comments)
             + "&icon=" + escape(iconUrl);

    threadUrl = threadUrl + "?" + postData;

    $.ajax({
        url: threadUrl,
        type: "POST",
        cache: false
    });

    //post the message to partners
    PostPartnerMessage(comments);
}

function ThreadControl_GetInput(name) {
    var threadEntryPrefix = "thread_reply_entry_";
    var threadInputId = "#" + threadEntryPrefix + name;
    return $(threadInputId)
}

function ThreadControl_GetCurrentDate() {
    var dateFormat = "MM/dd/yyyy hh:mm:ss a";
    var date = new Date();
    return $.dateFormat.date(date, dateFormat);
}

function ThreadControl_Cleanup() {
    ThreadControl_GetInput("name").val("");
    ThreadControl_GetInput("email").val("");
    ThreadControl_GetInput("url").val("");
    ThreadControl_GetInput("comments").val("");
}

