﻿$(document).ready(function () {

    $("div#lp_dialogs_bookshelf_import_clipboard_wizard").dialog({
        title: 'Import from anywhere',
        autoOpen: false,
        modal: true,
        width: 340,
        resizable: false,
        draggable: true,
        buttons: {
            "Close": function () {
                $("div#lp_dialogs_bookshelf_import_clipboard_wizard").dialog('close');
                window.location.reload(true);
            }
            ,
            "Next »": function () {
                if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_1').is(":visible")) {

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_1').hide();
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').show();
                    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Previous')").css('visibility', 'visible');

                }
                else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').is(":visible")) {

                    var ids = $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2 textarea').val();

                    // change all newlines, spaces and negatives to comma's
                    ids = ids.replace(/\r/g, ',');
                    ids = ids.replace(/\n/g, ',');
                    ids = ids.replace(/ /g, ',');
                    ids = ids.replace(/-/g, ',');

                    // fix double comma's and leading, trailing comma's
                    while (ids.indexOf(',,') > -1) ids = ids.replace(/,,/g, ',');
                    ids = ids.replace(/^,/g, '');
                    ids = ids.replace(/,$/g, '');

                    if (ids == "") {
                        alert("Please paste or type your PubMed id's in the textbox,\nseparated by comma's, spaces or newlines");
                        return;
                    }

                    var arr = ids.split(',');

                    for (var i = 0; i < arr.length; i++) {
                        if (!arr[i].isnumeric() || arr[i].indexOf('.') > -1 || parseInt(arr[i], 10) < 1 || parseInt(arr[i], 10) > 40000000) {
                            alert("There is an invalid PubMed id in your list: '" + arr[i] + "'\n\nPlease provide only numeric values > 0,\nseparated by comma's, spaces or newlines");
                            return;
                        }
                        else {
                            arr[i] = parseInt(arr[i], 10);
                        }
                    }

                    arr = arr.unique();
                    arr.sort(function (a, b) { return a - b })

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_select').html('');

                    $.each(arr, function (key, value) {
                        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_select').
                            append($("<option style='font-family: Courier New'/>").val(value).text(value));
                    });

                    if (arr.length == 1) {
                        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_span').text('one valid PubMed id');
                    }
                    else {
                        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_span').text(arr.length + ' valid PubMed id\'s');
                    }

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').hide();
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').show();
                }
                else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').is(":visible")) {

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').hide();

                    lp_dialogs_bookshelf_import_clipboard_wizard_step_4_update(0);

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').show();
                }
                else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').is(":visible")) {

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').hide();

                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_5').show()

                    var select_options = $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_select').get(0);

                    var pmids = [];
                    for (var t = 0; t < select_options.length; t++) { pmids.push(parseInt(select_options[t].value)); }

                    var label_text = null;

                    if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_existing').get(0).checked) {
                        label_text = $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels').val();
                    }
                    else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_new').get(0).checked) {
                        label_text = $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label').val();
                    }

                    wsLinkedPapers.Bookshelfrecord_Import(
                        pmids
                        ,
                        label_text
                        ,
                        function (result) {

                            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_5').hide()

                            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_5').show();

                            switch (result.length) {
                                case 0:
                                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_5 span').text('0 articles')
                                    break;
                                case 1:
                                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_5 span').text('one article')
                                    break;
                                default:
                                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_5 span').text(result.length + ' articles')
                                    break;
                            }

                            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").hide();
                            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Previous')").hide();
                            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Cancel')").hide();
                            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Close')").show();
                        }
                        ,
                        function (result) {
                            lp_ajax_error(result);
                        }
                    );

                }
            }
            ,
            "« Previous": function () {
                if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').is(":visible")) {
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').hide();
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_1').show();
                    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Previous')").css('visibility', 'hidden');
                }
                else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').is(":visible")) {
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').hide();
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').show();
                }
                else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').is(":visible")) {
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').hide();
                    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').show();
                    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").removeClass('ui-state-disabled').attr('disabled', false);
                }
            }
            ,
            "Cancel": function () {
                $("div#lp_dialogs_bookshelf_import_clipboard_wizard").dialog('close');
            }
        }
    });

    $("div#lp_dialogs_bookshelf_import_pubmed").dialog({
        title: 'Import from PubMed',
        autoOpen: false,
        modal: true,
        width: 300,
        resizable: false,
        draggable: true,
        buttons: {
            "Save": function () {
                var clipboard = $("#lp_dialogs_bookshelf_import_pubmed_textarea").attr('value');

                if (clipboard == "") {
                    $("div#lp_dialogs_bookshelf_import_pubmed").dialog("close");
                    return;
                }

                $("#lp_dialogs_bookshelf_import_pubmed div.process").show();
                $("#lp_dialogs_bookshelf_import_pubmed_textarea").addClass('ui-state-disabled').attr('disabled', true)

                $('[aria-labelledby$=lp_dialogs_bookshelf_import_pubmed]').find(":button:contains('Cancel')").addClass('ui-state-disabled').attr('disabled', true);
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_pubmed]').find(":button:contains('Save')").addClass('ui-state-disabled').attr('disabled', true);

                wsLinkedPapers.Import(
                    clipboard
                    ,
                    function (result) {
                        alert("Your articles have been added to your bookshelf");
                        $("div#lp_dialogs_bookshelf_import_pubmed").dialog("close");
                        window.location.reload(true);
                    }
                    ,
                    function (result) {

                        alert(result.get_exceptionType() + '\n' + result.get_message() + '\n' + result.get_stackTrace());
                        $("div#lp_dialogs_bookshelf_import_pubmed").dialog("close");
                    }
                );

            }
            ,
            "Cancel": function () {
                $("div#lp_dialogs_bookshelf_import_pubmed").dialog("close");
            }
        }
    });

    $("#lp_dialogs_bookshelf_import_pubmed_textarea").focus(function () {
        if ($("#lp_dialogs_bookshelf_import_pubmed_textarea").attr('value') == dialog_bookshelf_import_pubmed_initial_text) {
            $("#lp_dialogs_bookshelf_import_pubmed_textarea").attr('value', '').removeClass('initial');
        }
    });

});

var dialog_bookshelf_import_pubmed_initial_text = "Click here to paste a list of PubMed Id's...";

function lp_dialogs_bookshelf_import_pubmed_open() {

    // reset dialog
    $("#lp_dialogs_bookshelf_import_pubmed_textarea").removeClass('ui-state-disabled').attr('disabled', false)
    $("#lp_dialogs_bookshelf_import_pubmed_textarea").removeClass().addClass('initial').attr('value', dialog_bookshelf_import_pubmed_initial_text);
    $("#lp_dialogs_bookshelf_import_pubmed div.process").hide();

    $('[aria-labelledby$=lp_dialogs_bookshelf_import_pubmed]').find(":button:contains('Cancel')").removeClass('ui-state-disabled').attr('disabled', false);
    $('[aria-labelledby$=lp_dialogs_bookshelf_import_pubmed]').find(":button:contains('Save')").removeClass('ui-state-disabled').attr('disabled', false);

    // open dialog
    $("div#lp_dialogs_bookshelf_import_pubmed").dialog('open');

}

function lp_dialogs_bookshelf_import_clipboard_wizard_step_4_update(_active_step) {

    // 0 means i don't know. check the radios
    // -1 means reset

    if (_active_step == 0) {
        if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_none').attr('checked')) {
            _active_step = 1;
        }
        else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_existing').attr('checked')) {
            _active_step = 2;
        }
        else if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_new').attr('checked')) {
            _active_step = 3;
        }
        
    }
    else if (_active_step == -1) {

        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels').html("<option>Choose a label...</option>");

        $('#bookshelf_user_labels li .label .text').each(function () {
            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels').
            append($("<option/>").val($(this).text()).text($(this).text()));
        });

        if ($('#bookshelf_user_labels li .label .text').length == 0) {
            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_div_existing').attr('disabled', true);
        }
        else {
            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_div_existing').attr('disabled', false);
        }

        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label').val('');

        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_none_icon').removeClass().addClass('ok');
        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels_icon').removeClass();
        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass();

        $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_none').attr('checked', 'checked');

    }

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels_icon').removeClass();
    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass();
    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_none_icon').removeClass()


    switch (_active_step) {
        case 1:

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_none').attr('checked', true);

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_none_icon').addClass('ok');

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').slideUp();

            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").removeClass('ui-state-disabled').attr('disabled', false);

            break;

        case 2:

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_existing').attr('checked', true);

            if ($('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels').get(0).selectedIndex == 0) {
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels_icon').addClass('error');
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").addClass('ui-state-disabled').attr('disabled', true);
            }
            else {
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_existing_labels_icon').addClass('ok');
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").removeClass('ui-state-disabled').attr('disabled', false);
            }

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').slideUp();

            break;

        case 3:

            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_radio_new').attr('checked', true);

            var new_label = $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label').val();

            if (new_label.length == 0) {
                // the label is empty
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass().addClass('error');
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').text('the label must have text').slideDown();
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").addClass('ui-state-disabled').attr('disabled', true);
            }
            else if (new_label.length > 36) {
                // the label is too long
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass().addClass('error');
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').text('the label is too long').slideDown();
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").addClass('ui-state-disabled').attr('disabled', true);
            }
            else if (!validate_label_text_characters(new_label)) {
                // the label contains invalid characters
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass().addClass('error');
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').text('Only letters, numbers, spaces and dashes allowed').slideDown();
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").addClass('ui-state-disabled').attr('disabled', true);
            }
            else if (lp_bookshelf_label_exists(new_label)) {
                // this label already exists
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass().addClass('error');
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').text('this label already exists').slideDown();
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").addClass('ui-state-disabled').attr('disabled', true);
            }
            else {
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_icon').removeClass().addClass('ok');
                $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_new_label_message').slideUp();
                $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").removeClass('ui-state-disabled').attr('disabled', false);
            }

            break;

        default:
            // reset
            $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_none_icon').addClass('ok');

            $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").removeClass('ui-state-disabled').attr('disabled', false);

            break;
    }

}

function lp_dialogs_bookshelf_import_clipboard_wizard_open() {

    // reset dialog
    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_1').show();

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2').hide();
    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_2 textarea').val('');

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3').hide();

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_3_select').html('');

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4').hide();

    lp_dialogs_bookshelf_import_clipboard_wizard_step_4_update(-1); // reset

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_4_5').hide();

    $('#lp_dialogs_bookshelf_import_clipboard_wizard_step_5').hide();

    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Cancel')").show();
    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Previous')").show().css('visibility', 'hidden');
    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Next')").show();
    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button:contains('Close')").hide();

    $('[aria-labelledby$=lp_dialogs_bookshelf_import_clipboard_wizard]').find(":button").css('width', '100px');

    // open dialog
    $("div#lp_dialogs_bookshelf_import_clipboard_wizard").dialog('open');

}
