﻿$(document).ready(function () {

    $("div#lp_dialogs_note_not_logged_in").dialog({
        title: 'Notes',
        autoOpen: false,
        modal: true,
        width: 300,
        resizable: false,
        draggable: false,
        buttons: {
            "Close": function () {
                $("div#lp_dialogs_note_not_logged_in").dialog("close");
            }
            ,
            "Log in": function () {
                $("div#lp_dialogs_note_not_logged_in").dialog("close");
                document.location = "/Secure/LogIn.aspx?ReturnUrl=" + window.location.href;
            }
            ,
            "Sign up": function () {
                $("div#lp_dialogs_note_not_logged_in").dialog("close");
                document.location = "/SignUp.aspx";
            }
        }
    });

    $("div#lp_dialogs_note").dialog({
        title: 'Notes',
        autoOpen: false,
        modal: true,
        width: 300,
        resizable: false,
        draggable: true,
        buttons: {
            "Save": function () {

                // fix the state of *ALL* buttons on the page in one go. this used to be a problem with the Save button on this dialog
                $(":button").removeClass("ui-state-focus ui-state-hover");

                var pmid = $("#lp_dialogs_note").data('pmid');
                var note = $("#lp_dialogs_note_textarea").attr('value');

                if (note == $("#lp_dialogs_note").data('note') || note == dialog_note_initial_text) {
                    // the text didn't, or wasn't changed: do nothing!
                    $("div#lp_dialogs_note").dialog('close');
                }
                else {
                    // disable buttons
                    $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Remove')").addClass('ui-state-disabled').attr("disabled", true);
                    $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Save')").addClass('ui-state-disabled').attr("disabled", true);
                    $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Cancel')").addClass('ui-state-disabled').attr("disabled", true);

                    // disable textarea
                    $("#lp_dialogs_note_textarea").addClass('ui-state-disabled').attr('disabled', true)

                    // show process div
                    $("#lp_dialogs_note div.process span").text("Saving, please wait...");
                    $("#lp_dialogs_note div.process").show();

                    if (note == "") {
                        // the text changed to "": delete!

                        wsLinkedPapers.Bookshelfrecord_Note_Delete(
                            pmid
                            ,
                            function (result) {

                                // update the note
                                $(".linkedpaper_" + pmid + " div.menu a.note").text("");

                                // update the class
                                $(".linkedpaper_" + pmid).removeClass('has_notes').addClass('has_no_notes');

                                lp_bookshelf_recalculate_label_citations();

                                bookshelf_articlelist_update();

                                $("div#lp_dialogs_note").dialog("close");
                            }
                            ,
                            function (result) {
                                alert(result.get_exceptionType() + '\n' + result.get_message() + '\n' + result.get_stackTrace());
                            }
                        );

                    }
                    else {
                        // the text changed to something else then "": save!

                        wsLinkedPapers.Bookshelfrecord_Note_Save(
                            pmid
                            ,
                            note
                            ,
                            function (result) {

                                $li = $(".linkedpaper_" + pmid);

                                // update the note
                                $li.find("div.menu a.note").text(note);

                                // update the class
                                $li.addClass('has_notes');

                                lp_bookshelf_recalculate_label_citations();

                                if ($li.hasClass('is_in_bookshelf')) {
                                }
                                else {
                                    var i = parseInt($li.find("div.title > div.menu > a.bookshelf").text()) + 1;
                                    $li
                                        .addClass('is_in_bookshelf')
                                        .find("div.title > div.menu > a.bookshelf")
                                        .text(i.toString())
                                        .attr("title", getCitationToolBookshelfMouseOverMessage(true, i));
                                }

                                bookshelf_articlelist_update();

                                $("div#lp_dialogs_note").dialog("close");
                            }
                            ,
                            function (result) {
                                alert(result.get_exceptionType() + '\n' + result.get_message() + '\n' + result.get_stackTrace());
                            }
                        );

                    }

                }

            }
            ,
            "Cancel": function () {
                $("div#lp_dialogs_note").dialog("close");
            }
            ,
            "Remove": function () {
                if (confirm("Are you sure you want to completely remove this note?")) {
                    $("#lp_dialogs_note_textarea").attr('value', '');
                    $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Save')").click();
                }
            }
        }
    });

    $('#lp_dialogs_note_textarea').keyup(function (event) {

        if ($("div#lp_dialogs_note").data('note') == $("#lp_dialogs_note_textarea").attr('value')) {
            $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Save')").addClass('ui-state-disabled').attr("disabled", true);
        }
        else {
            $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Save')").removeClass('ui-state-disabled').removeAttr("disabled");
        }
    });

    $("#lp_dialogs_note_textarea").focus(function () {

        if ($("#lp_dialogs_note_textarea").attr('value') == dialog_note_initial_text) {
            $("#lp_dialogs_note_textarea").attr('value', '').removeClass('initial');
        }
    });


});

var dialog_note_initial_text = "Click here to start writing a personal note...";

function lp_dialog_note_open(_pmid) {

    if ($("body").hasClass('logged_in')) {

        // this is the note as it used to be
        var note = $(".linkedpaper_" + _pmid + " div.menu a.note").text();

        // save the initial note & pmid on the dialog so the Save, Delete & KeyUp methods can access them
        $("div#lp_dialogs_note").data('note', note);
        $("div#lp_dialogs_note").data('pmid', _pmid);

        // reset dialog
        $("#lp_dialogs_note_textarea").removeClass();
        $("#lp_dialogs_note div.process").hide();

        $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Save')").addClass('ui-state-disabled').attr("disabled", true);
        $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Cancel')").removeClass('ui-state-disabled').removeAttr("disabled");
        $("#lp_dialogs_note_textarea").removeClass('ui-state-disabled').removeAttr("disabled");

        // open dialog
        $("div#lp_dialogs_note").dialog('open');

        if (note == "") {
            $("#lp_dialogs_note_textarea").attr('value', dialog_note_initial_text).addClass('initial');
            $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Remove')").addClass('ui-state-disabled').attr("disabled", true);
        }
        else {
            $("#lp_dialogs_note_textarea").attr('value', note);
            $('[aria-labelledby$=lp_dialogs_note]').find(":button:contains('Remove')").removeClass('ui-state-disabled').removeAttr("disabled");
            setCaretToPos(document.getElementById("lp_dialogs_note_textarea"), note.length)
        }

    }
    else {
        $("div#lp_dialogs_note_not_logged_in").dialog('open');
    }

}

