﻿// JScript File
var gPrefix = "ctl00_MainContent_";

function submitComment(controlID)
{
    var comment = document.getElementById('taComment').value;
    if (comment != null && comment != '')
    {
        var controlState = document.getElementById(gPrefix + controlID + '_hControlState').value;
     
        // disable submit button
        document.getElementById('btnReply').disabled = true;
     
        webv2_Controls_Discussion.SubmitNewComment(comment, controlState, submitComment_callback);
    }
}
function submitComment_callback(retval)
{
    document.getElementById('btnReply').disabled = false;
    
    if (retval.value != null && retval.value[0] != '')
    {
        document.getElementById(gPrefix + retval.value[1] + '_hControlState').value = retval.value[0];
        reloadDiscussion(retval.value[1]);
        
        window.location = "#" + retval.value[2];
        
        // cleanup
        if (document.getElementById('numreplies') != null)
        {
            var numreplies = parseInt(document.getElementById('numreplies').innerHTML);
            numreplies += 1;
            document.getElementById('numreplies').innerHTML = numreplies;
        }
        /*
        if (document.getElementById('divMessages') != null)
        {
            document.getElementById('divMessages').innerHTML = "Posted.";
        }
        */
        document.getElementById('taComment').value = "";
        
        showMessageHere("submitMessages", "Your comment has been added", "You have 15 minutes to make any changes using the 'edit' button.");
        
        // if post is on next page, reload with last index
        if (document.getElementById("comment" + retval.value[2]) == null)
        {
            loadLastIndex();
        }
    }
    else
    {
        showMessageHere("submitMessages", "Error posting",  "Please refresh and try again in a little while.", true);
    }
}

function reloadDiscussion(controlID)
{
    var controlState = document.getElementById(gPrefix + controlID + '_hControlState').value;
    var reloaded = webv2_Controls_Discussion.ReloadDiscussion(controlState);
    if (reloaded != null && reloaded.value != '')
    {
        document.getElementById('divComments').innerHTML = reloaded.value;
        document.getElementById(gPrefix + controlID + '_hCache').value = reloaded.value;
        if(typeof(UpdateStats) == 'function') {
            UpdateStats();
        }
    }
    else
    {
        showMessageHere("discussionMessages", "Error" , "You may have been logged out. Please refresh.", true);
        window.location = "#messagesanchor";
    }
}
function reloadDiscussionCache(controlID)
{
    if (document.getElementById(gPrefix + controlID + '_hCache').value != '')
    {
        document.getElementById('divComments').innerHTML = document.getElementById(gPrefix + controlID + '_hCache').value;
    }
    else
    {
        reloadDiscussion(controlID);
    }
}

/*
function reloadDiscussion_callback(retval)
{
    if (retval != null && retval.value != '')
    { 
        document.getElementById('divComments').innerHTML = retval.value;
    }
}
*/

function editComment(commentID, controlID)
{   
    if (document.getElementById('edit' + commentID).value != 'editing') // if name is 'editing', then don't try and edit again
    {
        document.getElementById("discussionMessages").style.display = "none";
        var comment = document.getElementById('commentText' + commentID).innerHTML;
        
        webv2_Controls_Discussion.EditComment(commentID, comment, controlID, editComment_callback);
    }
}
function editComment_callback(retval)
{
    if (retval != null && retval.value[1] != "")
    {
        reloadDiscussionCache(retval.value[2]);
        document.getElementById('edit' + retval.value[0]).value = 'editing';
        document.getElementById('commentText' + retval.value[0]).innerHTML = retval.value[1];
    }
    else
    {
        showMessageHere("discussionMessages", "Error" , "You may have been logged out. Please refresh.", true);
        window.location = "#messagesanchor";
    }
}

function saveEdit(commentID, controlID)
{
document.getElementById("discussionMessages").style.display = "none";

    var newComment = document.getElementById('taComment' + commentID).value;
    
    document.getElementById('btnEdit').disabled = true;
        
    webv2_Controls_Discussion.SaveEdit(commentID, newComment, controlID, saveEdit_callback);
}
function saveEdit_callback(retval)
{
    document.getElementById('btnEdit').disabled = false;
    if (retval != null)
    {
        if (retval.value[1] == "success")
        {
            reloadDiscussion(retval.value[0]);
            showMessageHere("discussionMessages", "Your post has been edited", "", false);
        }
        else
        {
            showMessageHere("discussionMessages", "You do not have permission to edit this post", "Please log in and try again.", true);
            window.location = "#messagesanchor";
            //window.location.reload(true);
        }
    } // else error
}
function cancelEdit(controlID)
{
    reloadDiscussionCache(controlID);
}

function quoteReply(id)
{
    // get comment_original from server
    webv2_Controls_Discussion.GetOriginalComment(id, quoteReply_callback);
}

function quoteReply_callback(retval)
{
    if (retval != null && retval.value[1] != "")
    {
        //document.getElementById('taComment').value = "[quote id=" + retval.value[0] + "]" + retval.value[1] + "[/quote]";
        var comment =  retval.value[1];
        // strip inner quotes
        comment = regexreplace(comment,"(\\[quote(.*)?\\])((.|\\n|\\r)*?)(\\[\/quote\\])","");
   
       
        document.getElementById('taComment').value = "[quote id=" + retval.value[0] + "]" + comment + "[/quote]";
        window.location = "#reply";
    }
}


function deletePost(commentID, controlID)
{
    (new $.AviaryDialog()).choices({ 
        'title': 'Warning',
        'content': '<p>Are you sure you want to delete this message?</p>',
	    'buttons': {
       	    'Delete': function() { 
       	        var controlState = document.getElementById(gPrefix + controlID + '_hControlState').value;
                webv2_Controls_Discussion.DeletePost(commentID, controlState, deletePost_callback);
       	    },
       	    'Cancel': function() { return false;}
	    }
    });
}
function deletePost_callback(retval)
{
    if (retval != null && retval.value > -1)
    {
        // hide that post and display deleted message
        document.getElementById('comment' + retval.value).style.display = "none";
        
        //document.getElementById('divMessages').innerHTML = "Post deleted successfully.";
        // cleanup
        if (document.getElementById('numreplies') != null)
        {
            var numreplies = parseInt(document.getElementById('numreplies').innerHTML);
            if (numreplies > 0)
            {
                numreplies -= 1;
                document.getElementById('numreplies').innerHTML = numreplies;
            }
        }
        showMessageHere("discussionMessages", "Post deleted successfully", "", false);
    }
    else
        showMessageHere("discussionMessages", "Error deleting post", "Please reload the page and try again. You may need to log in.", true);
}

function regexreplace(str,regx,regp) 
{
    var re = new RegExp(regx, "gmi");
    return str.replace(re,regp);
}
