function showCommentEditor()
{
    document.getElementById("editor").style.display = "block";
}

function previewComment()
{
    if(!validateComment())
        return;
    
    var body = document.getElementById("comment_body").value;
    var nickname = document.getElementById("user_nickname");
    username = nickname ? nickname.value : ('"' + document.getElementById("comment_username").value + '"');
    
    document.getElementById("commentPreviewUsername").innerHTML = username;
    document.getElementById("commentPreviewBody").innerHTML = paragraphise(body);
    showPreview(true);
}

function editComment()
{
    showPreview(false);
}

function showPreview(preview)
{
    document.getElementById("commentFields").style.display = preview ? "None" : "Block";
    document.getElementById("commentPreview").style.display = preview ? "Block" : "None";
    document.getElementById("previewLink").style.display =  preview ? "None" : "Block";
    document.getElementById("editLink").style.display = preview ? "Block" : "None";
}

/*function setUsernameFromNickname()
{
    var useNickname = document.getElementById("useNickname").checked;
    var username = document.getElementById("username");
    if(useNickname)
    {
        var nickname = document.getElementById("nickname").value;
        username.value = nickname;
        username.disabled = true;
    }
    else
    {
        username.value = "";
        username.disabled = false;
    }
}*/

function paragraphise(s)
{
    s = s.replace(/\n\n/g, "</p><p>");
    s = s.replace(/\n/g, "<br />");
    s = "<p>" + s + "</p>";
    return s;
}

function validateComment()
{
    var body = document.getElementById("comment_body").value;
    if(isBoring(body))
    {
        alert('Cannot perform action because your comment is blank');
        return false;
    }
    if(!validateBody(body))
    {
        alert('Cannot perform action because your comment contains illegal Html');
        return false;
    }
    
    if(!document.getElementById("user_nickname"))
    {
        var username = document.getElementById("comment_username").value;
        if(isBoring(username))
        {
            alert('Cannot perform action because your name is blank');
            return false;
        }
        if(!validateUsername(username))
        {
            alert('Cannot perform action because your name contains illegal Html');
            return false;
        }

        var answer = document.getElementById("comment_answer").value;
        if(isBoring(answer))
        {
            alert('Cannot perform action because you have not answered the security question');
            return false;
        }
        if(!(answer == "15" || answer.toLowerCase() == "fifteen"))
        {
            alert('Cannot perform action because you have not answered the security question correctly');
            return false;
        }
    }
        
    return true;
}

function validateBody(body)
{
    re = new RegExp('<(?!(/|(em>[^<>]*</em>)|(a href="https?://[a-zA-Z0-9\-_\./\?=&\#]+">[^<>]*</a>)))', 'g');
    return (body.search(re) == -1);
}

function validateUsername(username)
{
    re = new RegExp('[<>\n\t]', 'g');
    return (username.search(re) == -1);
}

function isBoring(s)
{
    if(s == "")
        return true;
    re = new RegExp('[^ \n]', 'g');
    return (s.search(re) == -1);    
}
