﻿$(document).ready(function () {


    $("div#lp_dialogs_bookshelf_rename_label").dialog({
        title: 'Rename label',
        autoOpen: false,
        modal: true,
        width: 300,
        resizable: false,
        draggable: false,
        buttons: {
            "Cancel": function () {
                $("div#lp_dialogs_bookshelf_rename_label").dialog("close");
            },
            "OK": function () {

                var new_label = $('#lp_dialogs_bookshelf_labels_rename').attr('value');
                var old_label = $('#lp_dialogs_bookshelf_rename_label').data('label_initial_text');

                if (old_label == new_label) {
                    $("div#lp_dialogs_bookshelf_rename_label").dialog("close");
                    return;
                }

                wsLinkedPapers.Label_Rename(
                    old_label
                    ,
                    new_label
                    ,
                    function (result) {

                        // rename the labels in the article list
                        $("ol#bookshelf_articles li div.title div.menu a.label").each(function (i, e) {

                            var labels = $(this).text().split(",");

                            if ($.inArray(old_label, labels) > -1) {

                                // make a new array that doesn't have the old label
                                labels = $.grep(labels, function (n, i) {
                                    return (n != old_label);
                                });

                                // push the new label
                                labels.push(new_label);
                            }

                            $(this).text(labels.join(","));
                        });

                        $("#bookshelf_user_labels li a.label").each(function () {

                            if ($(this).attr('title') == old_label) {

                                $(this).fadeTo("slow", 0.01, function () {

                                    $(this).children("span:first").text(new_label.cutline(14));
                                    $(this).attr('title', new_label);

                                    $(this).fadeTo("slow", 1, function () {
                                        if ($.browser.msie) this.style.removeAttribute('filter');
                                    });
                                });

                            }
                        });

                        $('#linkedpapers_bookshelf_live_search').attr('value', '');

                        bookshelf_articlelist_update();

                        $("div#lp_dialogs_bookshelf_rename_label").dialog("close");


                    }
                    ,
                    function (result) {
                        switch (result.get_exceptionType()) {
                            case "System.Exception":
                                switch (result.get_message()) {
                                    case "You already have a label by this name":
                                        alert(result.get_message());
                                        return;
                                        break;
                                }
                                break;
                        }
                        alert(result.get_exceptionType() + '\n' + result.get_message() + '\n' + result.get_stackTrace());
                    }
                );

            }
        }
    });

    $('#lp_dialogs_bookshelf_labels_rename').keyup(function (e) {

        var new_label = $(this).attr('value');
        var _label_initial_text = $('#lp_dialogs_bookshelf_rename_label').data('label_initial_text');

        if (new_label == _label_initial_text) {
            // the label is still the same
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('label has not been changed');
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass().addClass('warning');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").removeClass('ui-state-disabled').attr('disabled', false);
        }
        else if (new_label.length == 0) {
            // the label is empty
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass().addClass('error');
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('the label must have text');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").addClass('ui-state-disabled').attr('disabled', true);
        }
        else if (new_label.length > 36) {
            // the label is too long
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass().addClass('error');
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('the label is too long');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").addClass('ui-state-disabled').attr('disabled', true);
        }
        else if (!validate_label_text_characters(new_label)) {
            // the label contains invalid characters
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass();
            $('#lp_dialogs_bookshelf_labels_rename_icon').addClass('error');
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('Only letters, numbers, spaces and dashes allowed');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").addClass('ui-state-disabled').attr('disabled', true);
        }
        else if (lp_bookshelf_label_exists(new_label)) {
            // this label already exists
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass().addClass('error');
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('this label already exists');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").addClass('ui-state-disabled').attr('disabled', true);
        }
        else {
            $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass().addClass('ok');
            $('#lp_dialogs_bookshelf_rename_label_error_message').text('');
            $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").removeClass('ui-state-disabled').attr('disabled', false);

            if (e.keyCode == 13) {
                $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").click();
            }
        }

    });

});

function lp_dialogs_bookshelf_rename_label_open(_text) {

    // reset the rename input box to white, and the text to the current label
    $('#lp_dialogs_bookshelf_labels_rename').attr('value', _text).css('background-color', 'white');

    // store the old value in the dialog as well
    $('#lp_dialogs_bookshelf_rename_label').data('label_initial_text', _text);

    // hide the warning and error messages
    $('#lp_dialogs_bookshelf_rename_label_error_message').text('');

    $('#lp_dialogs_bookshelf_labels_rename_icon').removeClass();
    $('[aria-labelledby$=lp_dialogs_bookshelf_rename_label]').find(":button:contains('OK')").removeClass('ui-state-disabled').attr('disabled', false);

    // open it
    $('#lp_dialogs_bookshelf_rename_label').dialog('open');

    // focus to the textbox and select all text
    $('#lp_dialogs_bookshelf_labels_rename').focus().select();
}

