function setupJournalForm() {
    limitTextAreaLength("#entryBody", 8192);
}


function changeTopic() {
    var topic_id = $("#showTopicDropdown")[0].value;
    if (topic_id == "manage")
        window.location = g_manage_topics_url;
    else
        window.location = g_base_journal_url + topic_id;
}

function changePrivateTopic() {
    var topic_id = $("#showPrivateTopicDropdown")[0].value;
    if (topic_id == "manage")
        window.location = g_manage_topics_url;
    else
        window.location = g_base_private_journal_url + topic_id;
}

function validateMessageForm(form) {
    var to = form.to.value;
    var subject = form.subject.value;
    var body = form.body.value;
    var errors = [];

    if (!to) {
        errors.push("Something weird just happened");
    }

    if (!subject) {
        errors.push("Please enter a subject"); 
    }

    if (!body) {
        errors.push("Please enter a message");
    }

    if (body.length > 4096) {
        errors.push("Please enter a shorter message (at most 4,096 characters)");
    }

    if (errors.length) {
        $("#formErrors").html(errors.join("<br>") + "<br><br>");
        return false;
    }

    $.ajax({
        type: "POST",
        url: "/messages/send_ajax",
        dataType: "html",
        data: {to: to, subject: subject, body: body},
        success: function(html) {
            $("#sendMessagePopup").html(html);
            centerPopup("#sendMessagePopup");
        },
        error: function() {
            $("#formErrors").html("Your message could not be sent.  Please try again later.");
            centerPopup("#sendMessagePopup");
        }
    });
        
    return false;
}

function validateAddFriendForm(form) {
    if (form.message.value.length > 255) {
        $("#addFriendFormErrors").html("Please enter a shorter message");
        centerPopup("#addFriendPopup");
        return false;
    }

    return true;
}

function previewVideo() {
    var html = $("#videoHtml")[0].value;
    $.ajax({
        url: "/user_profile/scrub_embed_html_ajax",
        type: "POST",
        data: {"html": html},
        success: function(embed_html) {
            $("#videoPreview").html("Preview of your video:<br>" + embed_html + "<br><br>");
            $("#videoPreview").show();
            centerPopup("#embedVideoPopup", true);
            $("#embedVideoButton").removeAttr("disabled");
            $("#embedVideoErrors").hide();
        },
        error: function(req, s, err) {
            $("#videoPreview").hide();
            $("#embedVideoErrors").html("Sorry, the link you entered looks incorrect.  Please double-check and try again.");
            $("#embedVideoErrors").show();
            centerPopup("#embedVideoPopup");
            $("#embedVideoButton").attr("disabled","disabled");
        }
    });
}

//
// view journal entry
//

function setupDeleteCommentForm(post_eid, comment_id) {
    $("#deletePostId")[0].value = post_eid;
    $("#deleteCommentId")[0].value = comment_id;
}

function setupDeleteEmbedForm(username, embed_eid) {
    $("#deleteEmbedForm")[0].action = "/user/"+username+"/delete_journal_embed/"+embed_eid;
}

function thumbsUp() {
    var thumbs_up_span = $("#thumbsUpSpan");
    var url = $("#thumbsUpUrl")[0].value;
    $.ajax({
        type: "POST",
        url: url,
        success: function() {
            thumbs_up_span.html("Thumbs up! (need icon)");
            thumbs_up_span.addClass("success");
        },
        error: function() {
            thumbs_up_span.html("An error occurred.  Please try again later.");
            thumbs_up_span.addClass("failure");
        }
    });
}

//
// manage topics
// 

function setDeleteUrl(url) {
    $("#deleteForm")[0].action = url;
}

function setRenameUrl(url) {
    $("#renameForm")[0].action = url;
}

function setupManageTopics() {
    if ($("#newTopicButton").length)
        disableButtonIfEmpty("#newTopicButton", "#createTopicName");

    if ($("a.deleteTopic").length)
        registerPopup("a.deleteTopic", "#confirmDeletePopup", "#confirmDeletePopupClose");

    if ($("a.renameTopic").length) {
        registerPopup("a.renameTopic", "#renamePopup", "#renamePopupClose");
        disableButtonIfEmpty("#renameSubmit", "#newTopicName");
    }
}

// 
// show journal entry
//

function updateJournalBodyCharCount() {
    updateCharCount($("#entryBody")[0], 8192, "entryBodyCharCount", "", "journal entry");
}


function setupDeleteForm(username, entry_id) {
    $("#deleteForm")[0].action = "/user/"+username+"/delete_journal_entry/"+entry_id;
}


function validateCreateForm() {
    if (!$("#entrySubject")[0].value.length || !$("#entryBody")[0].value.length)
        return false;

    if (!$("#entryTags")[0].value) {
        // ok not to have tags
        return true;
    }

    tags = $("#entryTags")[0].value;
    re = new RegExp(/^[\w\s\d]{0,120}$/);
    valid = re.test(tags);
    if (!valid) {
        $("#createFormErrors").html("Please type one or more tags separated by spaces.  Tags may contain letters and numbers.");
        $("#createFormErrors").removeClass("hidden");
        centerPopup("#createEntryPopup");
    }
    return valid;
}

function changeEntryTopic() {
    var topic_value = $("#topicDropdown")[0].value;
    var name_field = $("#entryNewTopicName");
   
    if (topic_value == "new") {
        if (name_field.hasClass("hidden"))
            name_field.removeClass("hidden");
    }
    else {
        if (!name_field.hasClass("hidden"))
            name_field.addClass("hidden");
    }
}


function setupNoteModule() {
    if ($("#newNoteForm").length == 0)
        return;
    disableButtonIfEmpty("#postNoteButton", "#newNoteText");
}


function setupShow() {
    if ($("#entryBody")[0]) {
        updateJournalBodyCharCount();
        $('#entryBody').keyup(function(e) {
            updateJournalBodyCharCount();
        });
    }

    if ($("a.delEntry").length)
        registerPopup("a.delEntry", "#confirmDeletePopup", "#confirmDeletePopupClose");

    setupNoteModule();
}

function setupWriteNewJournalEntry() {
    if ($("a.addNewEntry").length)
        registerPopup("a.addNewEntry", "#createEntryPopup", "#createEntryPopupClose");
    if ($("#submitJournalEntry").length)
        disableButtonIfEmpty("#submitJournalEntry", "#entrySubject,#entryBody");
}

function showAddFriend(username) {
    $("#hiddenUsername").val(username);
    $("#addFriendUsername").html(username);
    showPopup("#addFriendPopup");
    return false;
}

function updatePPCaption(id) {
    var caption = $("#actions_"+id+" .caption").val();
    var data = { "pic_id": id, "caption": caption };

    $.ajax({
        type: "POST",
        url: g_updateCaptionUrl,
        data: data,
        success: function() {
            $("#actions_"+id+" .updateStatus")
                .removeClass()
                .addClass("updateStatus ajaxSuccess")
                .text("Caption updated");
        },
        error: function() {
            $("#actions_"+id+" .updateStatus")
                .removeClass()
                .addClass("updateStatus ajaxError")
                .text("Error");
        }
    });
}


function removePP(id) {
    $.ajax({
        type: "POST",
        url: g_removeUrl,
        data: { "pic_id": id },
        success: function() {
            var $pic = $("#pic_"+id);
            $pic.addClass("deleted");
            $pic.slideUp("slow");
        },
        error: function() {
            $("#actions_"+id+" .removeStatus")
                .removeClass()
                .addClass("removeStatus")
                .addClass("ajaxError")
                .text("Error");
        }
    });
}


function makeDefaultPP(id) {
    $.ajax({
        type: "POST",
        url: g_makeDefaultUrl,
        data: { "pic_id": id },
        success: function() {
            var $pic = $("#pic_"+id);
            $("#actions_"+id+" .removeStatus")
                .removeClass()
                .addClass("removeStatus")
                .addClass("ajaxSuccess")
                .text("Made default");
            setTimeout('$("#actions_'+id+' .removeStatus").text("");', 5000);
        },
        error: function() {
            $("#actions_"+id+" .removeStatus")
                .removeClass()
                .addClass("removeStatus")
                .addClass("ajaxError")
                .text("Error");
        }
    });
}

function showGiveKudoJournal(url, eid, gk) {
    $("#giveKudoForm").attr("action", url);
    $("#ggst").val("je");
    $("#ggs1").val(eid);
    $("#ggs2").val("");
    MMW.kudos.disableKudos(gk);
    showPopup("#giveKudoOverlay");
}

function showGiveKudoJournalComment(url, jeid, cid, gk) {
    $("#giveKudoForm").attr("action", url);
    $("#ggst").val("jc");
    $("#ggs1").val(cid);
    $("#ggs2").val(jeid);
    MMW.kudos.disableKudos(gk);
    showPopup("#giveKudoOverlay");
}

//
// main document handler
//

$(document).ready(function() {
    if ($("#addFriendMessage").length)
        limitTextAreaLength("#addFriendMessage", 255);

    registerPopup("#sendMessage", "#sendMessagePopup", "#cancelSendMessage");
    disableButtonIfEmpty("#messageSubmit", "#subject,#messageBody");
    registerPopup("#noSuchElement", "#addFriendPopup", "#addFriendPopupClose");

    if ($("a#deleteEntry").length && g_ev)
        registerPopup("a#deleteEntry", "#confirmDeleteEntryPopup", "#confirmDeleteEntryPopupClose");

    if ($("a.delJournalComment").length) 
        registerPopup("a.delJournalComment", "#confirmDeleteCommentPopup", "#confirmDeleteCommentPopupClose");

    if ($("#newJournalComment").length) 
        limitTextAreaLength("#entryCommentText", 2048);

    if ($("#embedVideo").length && g_ev) {
        registerPopup("a#embedVideo", "#embedVideoPopup", "#embedVideoPopupClose");
        disableButtonIfEmpty("#previewVideoButton", "#videoHtml");
        $("previewVideoButton,#embedVideoButton").attr("disabled", "disabled");
    }

    if ($("a.removeEmbed").length) {
        registerPopup("a.removeEmbed", "#confirmDeleteEmbedPopup", "#confirmDeleteEmbedPopupClose");
    }

    if ($("a.giveKudo").length && g_ev) {
        registerPopup("a.giveKudo", "#giveKudoOverlay", "#giveKudoCancel");
        MMW.kudos.setupOverlay();
    }

    if ($("a.giveKudoInt").length && g_ev) {
        registerPopup("#dummyelem", "#giveKudoOverlay", "#giveKudoCancel");
        MMW.kudos.setupOverlay();
    }
});

