
/******************************************************
* Please include Helper.js file before using this script
******************************************************/

var discussionTemplate = null;
var discussionPostTemplate = null;


var CheckInItemTemplate = null;
var CheckInPostTemplate = null;

var plcImage = '[IMAGE]';
var plcDate = '[DATE]';
var plcAndsaid = '[ANDSAID]';
var pclResponse = '[RESPONSE]'
var plcChallengeID = '[ChallengeID]'

var plcPost = '[POST]';
var plcSID = '[SID]';
var plcUserName = '[USERNAME]';
var plcMessage = '[MESSAGE]';
var plcItemID = '[ITEMID]';
var plcImageSrc = '[IMAGESRC]';
var plcImageAlt = '[IMAGEALT]';

/* 
****************************************************
****************************************************
****************************************************
Group Discussions
****************************************************
****************************************************
****************************************************
*/

function RemoveDiscussionMessage(itemID, ancRemoveObj) {
    var xmlInput = GetRemoveDiscussionXmlInput(itemID);

    $.ajax({
        type: "POST",
        url: "/Services/GroupServicePage.aspx",
        data: "method=RemoveDiscussionMessage&xmlInput=" + xmlInput,
        error: function(XMLHttpRequest, textStatus, errorThrown) {

            //alert(textStatus + " " + errorThrown);
        },
        success: function(xml) {
            var liObj = ancRemoveObj.parentNode.parentNode;
            $(liObj).remove();
        } //end of success handler
    });
}

function GetRemoveDiscussionXmlInput(itemID, discussionType) {
    var xmlInput = "<input><itemID>" + itemID + "</itemID></input>";
    return xmlInput;
}

/* 
****************************************************
****************************************************
****************************************************
Community Discussions
****************************************************
****************************************************
****************************************************
*/

function PostCommunityDiscussion(threadID, ownerID, posterID, posterName, textCtrl, mainPostItemID, parentCtrl, maxPostsCount,validatiorId, event) {
    //get text from text area

    var text = $(JId(textCtrl)).val();
    var eventArg = event || window.event;

    if (eventArg)
        var target = eventArg.target || eventArg.srcElement;

    if (text) {
        text = text.trim();
        text = EncodeText(text);
    }

    if (text && 0 != text.length) {
        var xmlInput = GetCommunityDiscussionXmlInput(threadID, ownerID, posterID, mainPostItemID, text);

        $.ajax({
            type: "POST",
            url: "/Services/GroupServicePage.aspx",
            data: "method=PostCommunityDiscussionMessage&xmlInput=" + xmlInput,
            error: function(XMLHttpRequest, textStatus, errorThrown) {

                //alert(textStatus + " " + errorThrown);
            },
            success: function(xml) {

                var itemID, isValid;
                var validatior = document.all ? document.all[validatiorId] : document.getElementById(validatiorId);


                //Get the item Id from response
                $(xml).find('output').each(function(i) {
                    itemID = $(this).find("itemID").text();
                    text = $(this).find("message").text();
                    isValid = $(this).find("isValid").text();
                });
               var valSummary=$("div[name='ValSummary']");
                if (isValid && isValid == "True" )
                {
                    AppendCommunityDiscussionPost(parentCtrl, posterID, posterName, text, itemID);
                    TruncateCommunityDiscussionTable(parentCtrl, maxPostsCount);
                    ResetCommunityTextBox(textCtrl);
                    validatior.isValid = true;
                    validatior.style.display = "none";
                    valSummary[0].style.display = "none";
                    valSummary[0].innerHTML=""
                }
                else
                {
                    validatior.isValid = false;
                    validatior.style.display = "";
                    valSummary[0].style.display = "";
                    valSummary[0].innerHTML=validatior.errormessage;
                }
               
             
             }, //end of success handler
            beforeSend: function(xml) {
                if (target) target.disabled = true;
            }, //end of beforeSend handler
            complete: function(request, settings) {
                if (target) target.disabled = false;
            } //end of complete handler
        });
    }

}

function ResetCommunityTextBox(ctrl) {
    $(JId(ctrl)).attr('value', '');
}

function GetCommunityDiscussionXmlInput(threadID, ownerID, posterID, mainPostItemID, text) {
    var xmlInput = "<input><threadID>" + threadID + "</threadID><ownerID>" + ownerID + "</ownerID><posterID>" + posterID + "</posterID><mainPostItemID>" + mainPostItemID + "</mainPostItemID><message>" + text + "</message></input>";
    return xmlInput;
}

//function to trim table containing messages
function TruncateCommunityDiscussionTable(tableId, maxRows) {
    var rows = JId(tableId) + " tbody tr";

    var numberOfRows = $(rows).length;

    if (numberOfRows > maxRows) {
        $(JId(tableId) + ' tr:last').remove();
    }
}

function AppendCommunityDiscussionPost(containerId, posterID, posterName, message, itemID) {
    var postHTML = ConstructCommunityDiscussionPost(posterID, posterName, message, itemID);
    $(JId(containerId)).prepend(postHTML);
}

function JId(Id) {
    return "#" + Id;
}

function ConstructCommunityDiscussionPost(posterID, posterName, message, itemID) {
    //construct full template
    var fullTemplate = discussionTemplate.replace(plcPost, discussionPostTemplate);

    //now replace placeholder with values
    fullTemplate = fullTemplate.replace(plcSID, posterID);
    fullTemplate = fullTemplate.replace(plcSID, posterID);
    fullTemplate = fullTemplate.replace(plcUserName, posterName);
    fullTemplate = fullTemplate.replace(plcMessage, message);
    fullTemplate = fullTemplate.replace(plcItemID, itemID);

    return fullTemplate;
}

function RegisterCommunityDiscussionAttributes(itemTemplate, postTemplate, specialPostTemplate) {
    discussionTemplate = itemTemplate;
    discussionPostTemplate = postTemplate;
}

function RemoveCommunityDiscussionMessage(itemID, ancRemoveObj) {
    var xmlInput = GetRemoveDiscussionXmlInput(itemID);

    $.ajax({
        type: "POST",
        url: "/Services/GroupServicePage.aspx",
        data: "method=RemoveDiscussionMessage&xmlInput=" + xmlInput,
        error: function(XMLHttpRequest, textStatus, errorThrown) {

            //alert(textStatus + " " + errorThrown);
        },
        success: function(xml) {
            var trObj = ancRemoveObj.parentNode.parentNode.parentNode;
            MoveUpCommunityDiscussionPost(trObj);
            HideCommunityDiscussionPost(trObj);
        } //end of success handler
    });
}

function MoveUpCommunityDiscussionPost(trObj) {
    var tblPosts = trObj.parentNode.parentNode;
    var tblPostsMore = tblPosts.nextSibling;
    if (tblPostsMore.id != "tblPostsMore")
        tblPostsMore = tblPostsMore.nextSibling;

    if (tblPostsMore.rows.length > 0) {
        var firstRow = tblPostsMore.rows[0];
        var tBody = tblPosts.getElementsByTagName('tbody')[0];
        tBody.appendChild(firstRow);
    }

}

function HideCommunityDiscussionPost(trObj) {
    var tBody = trObj.parentNode;
    tBody.removeChild(trObj);
}



function GetSelectedValue(radioButtonId) {
    var radionGroupName = document.getElementById(radioButtonId);
    var myGroup = document.getElementsByName(radionGroupName.name);
    for (i = 0; i < myGroup.length; i++) {
        if (myGroup[i].checked) {
            return myGroup[i].getAttribute("value");
        }
    }
}


/* 
****************************************************
****************************************************
****************************************************
Challenges Check In
****************************************************
****************************************************
****************************************************
*/



function PostChallengeCheckIn(challengeID, posterId, posterName, radioButtonId, textBoxComment, parentCtrl, country, viewAll,validatiorId, event) {
    var challengeResponse = GetSelectedValue(radioButtonId);
    var text = $(JId(textBoxComment)).val();
    var eventArg = event || window.event;

    if (eventArg)
        var target = eventArg.target || eventArg.srcElement;

    if (text) {
        text = text.trim();
        text = EncodeText(text);
    }
    var xmlInput = GetCheckInXmlInput(challengeID, posterId, challengeResponse, text, country);

    $.ajax({
        type: "POST",
        url: "/Services/GroupServicePage.aspx",
        data: "method=PostChallengeCheckIn&xmlInput=" + xmlInput,
        error: function(XMLHttpRequest, textStatus, errorThrown) {

            if (target) target.disabled = false;
        },
        success: function(xml) {

            var itemID;
            var sDateTime, isValid;
            var validatior = document.all ? document.all[validatiorId] : document.getElementById(validatiorId);



            //Get the thread Id from response
            $(xml).find('output').each(function(i) {
                itemID = $(this).find("itemID").text();
            });

            //Get the thread Id from response
            $(xml).find('output').each(function(i) {
                itemText = $(this).find("message").text();
            });
            //Get the thread Id from response
            $(xml).find('output').each(function(i) {
                ResponseImage = $(this).find("ResponseImage").text();
            });
            $(xml).find('output').each(function(i) {
                sDateTime = $(this).find("datetime").text();
                isValid = $(this).find("isValid").text();
            });
            var valSummary = $("div[name='ValSummary']");
            if (isValid && isValid == "True") {
                AppendCheckInMessage(parentCtrl, posterId, posterName, challengeResponse, itemText, ResponseImage, itemID, challengeID, sDateTime);
                if (viewAll != 'True') TruncateTable(parentCtrl, 5);
                RemoveInputText(textBoxComment);
                validatior.isValid = true;
                validatior.style.display = "none";
                if (valSummary.length > 0) {
                    valSummary[0].style.display = "none";
                    valSummary[0].innerHTML = ""
                }
            }
            else {
                validatior.isValid = false;
                validatior.style.display = "";
                if (valSummary.length > 0) {
                    valSummary[0].style.display = "";
                    valSummary[0].innerHTML = validatior.errormessage;
                }
            }
            StyleTable();
            $("#noCheckInMessageDiv").hide();
        }, //end of success handler
        beforeSend: function(xml) {
            if (target) target.disabled = true;
        }, //end of beforeSend handler
        complete: function(request, settings) {
            if (target) target.disabled = false;
        } //end of complete handler
    });

}


function RemoveInputText(ctrl) {
    $(JId(ctrl)).attr('value', '');
}

function GetCheckInXmlInput(challengeID, posterId, challengeResponse, text, country) {
    var xmlInput = "<input><challengeID>" + challengeID + "</challengeID><posterId>" + posterId + "</posterId><challengeResponse>" + challengeResponse + "</challengeResponse><message>" + text + "</message><country>" + country + "</country></input>";
    return xmlInput;
}

function AppendCheckInMessage(containerId, posterId, posterName, challengeResponse, message, ResponseImage, itemID, challengeID,sDateTime) {
    var postHTML = ConstructCheckInPost(posterId, posterName, challengeResponse, message, ResponseImage, itemID, challengeID,sDateTime);
    $(JId(containerId)).prepend(postHTML);
}

function ConstructCheckInPost(posterId, posterName, challengeResponse, message, ResponseImage, itemID, challengeID,sDateTime) {
    //construct full template
 
    var fullTemplate = CheckInItemTemplate.replace(plcPost, CheckInPostTemplate);
    //now replace placeholder with values
    fullTemplate = ReplaceImage(fullTemplate, ResponseImage);
    fullTemplate = fullTemplate.replace(plcDate,sDateTime );
    fullTemplate = fullTemplate.replace(pclResponse, GetchallengeResponse(challengeResponse));
    fullTemplate = fullTemplate.replace(plcAndsaid, GetsaidMessage(message));
    fullTemplate = fullTemplate.replace(plcSID, posterId);
    fullTemplate = fullTemplate.replace(plcSID, posterId);
    fullTemplate = fullTemplate.replace(plcUserName, posterName);
    fullTemplate = fullTemplate.replace(plcMessage, message);
    fullTemplate = fullTemplate.replace(plcItemID, itemID);
    fullTemplate = fullTemplate.replace(plcChallengeID, challengeID);
    return fullTemplate;
}
function GetsaidMessage(message) {
    var said = "";
    if (message && 0 != message.length) {
        said = ChallengeCheckInResponse_LocResources["SaidMessage"];
    }
    return said;
}
function GetchallengeResponse(challengeResponse) {
    var Response;
    if (challengeResponse == "ResponseNo") {
        Response = ChallengeCheckInResponse_LocResources["ChallengeResponseNo"];
    }
    else {
        if (challengeResponse == "ResponsePartially") {
            Response = ChallengeCheckInResponse_LocResources["ChallengeResponsePartially"];
        }
        else {
            Response = ChallengeCheckInResponse_LocResources["ChallengeResponseYes"];
        };
    };

    return Response;
}
function RegisterCheckInAttributes(itemTemplate, postTemplate) {
    CheckInItemTemplate = itemTemplate;
    CheckInPostTemplate = postTemplate;
}


function RemoveChallengeCheckInMessage(itemID,challengeID, ancRemoveObj) {

    var xmlInput = GetRemoveChallengeCheckInMessage(itemID,challengeID);
    $.ajax({
        type: "POST",
        url: "/Services/GroupServicePage.aspx",
        data: "method=RemoveChallengeCheckInMessage&xmlInput=" + xmlInput,
        error: function(XMLHttpRequest, textStatus, errorThrown) {

        },
        success: function(xml) {
            var trObj = ancRemoveObj.parentNode.parentNode.parentNode.parentNode.parentNode
             MoveUpOldCheckInPostRow(trObj);
            HideChallengeCheckInPost(trObj);
            StyleTable();
        }
    });
}

function HideChallengeCheckInPost(trObj) {
    var tBody = trObj.parentNode;
    tBody.removeChild(trObj);
}

function GetRemoveChallengeCheckInMessage(itemID, challengeID) {
    var xmlInput = "<input><itemID>" + itemID + "</itemID><challengeID>" + challengeID + "</challengeID></input>";
    return xmlInput;
}

function MoveUpOldCheckInPostRow(trObj) {
    var tblFeed = trObj.parentNode.parentNode;
    var tblFeedMore = tblFeed.nextSibling;
    if (tblFeedMore.id != "tblHidingCheckIn")
        tblFeedMore = tblFeedMore.nextSibling;

    if (tblFeedMore.rows.length > 0) {
        var firstRow = tblFeedMore.rows[0];
        var tBody = tblFeed.getElementsByTagName('tbody')[0];
        tBody.appendChild(firstRow);

    }
}


