import.js

/* vim: set expandtab sw=4 ts=4 sts=4: */

/**
 * Module import
 */
import { changePluginOpts, matchFile } from './functions/import';
import { PMA_ajaxShowMessage } from './utils/show_ajax_messages';
import { PMA_Messages as messages } from './variables/export_variables';

/**
 * @package PhpMyAdmin
 *
 * Import
 */

/**
 * Unbind all event handlers before tearing down a page
 */
function teardownImport () {
    $('#plugins').off('change');
    $('#input_import_file').off('change');
    $('#select_local_import_file').off('change');
    $('#input_import_file').off('change').off('focus');
    $('#select_local_import_file').off('focus');
    $('#text_csv_enclosed').add('#text_csv_escaped').off('keyup');
}

/**
 * Binding event handlers on page load
 */
function onloadImport () {
    // import_file_form validation.
    $(document).on('submit', '#import_file_form', function () {
        var radioLocalImport = $('#radio_local_import_file');
        var radioImport = $('#radio_import_file');
        var fileMsg = '<div class="error"><img src="themes/dot.gif" title="" alt="" class="icon ic_s_error" /> ' + messages.strImportDialogMessage + '</div>';

        if (radioLocalImport.length !== 0) {
            // remote upload.

            if (radioImport.is(':checked') && $('#input_import_file').val() === '') {
                $('#input_import_file').trigger('focus');
                PMA_ajaxShowMessage(fileMsg, false);
                return false;
            }

            if (radioLocalImport.is(':checked')) {
                if ($('#select_local_import_file').length === 0) {
                    PMA_ajaxShowMessage('<div class="error"><img src="themes/dot.gif" title="" alt="" class="icon ic_s_error" /> ' + messages.strNoImportFile + ' </div>', false);
                    return false;
                }

                if ($('#select_local_import_file').val() === '') {
                    $('#select_local_import_file').trigger('focus');
                    PMA_ajaxShowMessage(fileMsg, false);
                    return false;
                }
            }
        } else {
            // local upload.
            if ($('#input_import_file').val() === '') {
                $('#input_import_file').trigger('focus');
                PMA_ajaxShowMessage(fileMsg, false);
                return false;
            }
        }

        // show progress bar.
        $('#upload_form_status').css('display', 'inline');
        $('#upload_form_status_info').css('display', 'inline');
    });

    // Initially display the options for the selected plugin
    changePluginOpts();

    // Whenever the selected plugin changes, change the options displayed
    $('#plugins').on('change', function () {
        changePluginOpts();
    });

    $('#input_import_file').on('change', function () {
        matchFile($(this).val());
    });

    $('#select_local_import_file').on('change', function () {
        matchFile($(this).val());
    });

    /*
     * When the "Browse the server" form is clicked or the "Select from the web server upload directory"
     * form is clicked, the radio button beside it becomes selected and the other form becomes disabled.
     */
    $('#input_import_file').on('focus change', function () {
        $('#radio_import_file').prop('checked', true);
        $('#radio_local_import_file').prop('checked', false);
    });
    $('#select_local_import_file').on('focus', function () {
        $('#radio_local_import_file').prop('checked', true);
        $('#radio_import_file').prop('checked', false);
    });

    /**
     * Set up the interface for Javascript-enabled browsers since the default is for
     *  Javascript-disabled browsers
     */
    $('#scroll_to_options_msg').hide();
    $('#format_specific_opts').find('div.format_specific_options')
        .css({
            'border': 0,
            'margin': 0,
            'padding': 0
        })
        .find('h3')
        .remove();
    // $("form[name=import] *").unwrap();

    /**
     * for input element text_csv_enclosed and text_csv_escaped allow just one character to enter.
     * as mysql allows just one character for these fields,
     * if first character is escape then allow two including escape character.
     */
    $('#text_csv_enclosed').add('#text_csv_escaped').on('keyup', function () {
        if ($(this).val().length === 2 && $(this).val().charAt(0) !== '\\') {
            $(this).val($(this).val().substring(0, 1));
            return false;
        }
        return true;
    });
}

/**
 * Module export
 */
export {
    teardownImport,
    onloadImport
};