text: /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   * Functions used in the export tab
   *
   */
  
  /**
   * Disables the "Dump some row(s)" sub-options
   */
  function disable_dump_some_rows_sub_options()
  {
      $("label[for='limit_to']").fadeTo('fast', 0.4);
      $("label[for='limit_from']").fadeTo('fast', 0.4);
      $("input[type='text'][name='limit_to']").prop('disabled', 'disabled');
      $("input[type='text'][name='limit_from']").prop('disabled', 'disabled');
  }
  
  /**
   * Enables the "Dump some row(s)" sub-options
   */
  function enable_dump_some_rows_sub_options()
  {
      $("label[for='limit_to']").fadeTo('fast', 1);
      $("label[for='limit_from']").fadeTo('fast', 1);
      $("input[type='text'][name='limit_to']").prop('disabled', '');
      $("input[type='text'][name='limit_from']").prop('disabled', '');
  }
  
  /**
   * Unbind all event handlers before tearing down a page
   */
  AJAX.registerTeardown('export.js', function () {
      $("#plugins").unbind('change');
      $("input[type='radio'][name='sql_structure_or_data']").unbind('change');
      $("input[type='radio'][name='latex_structure_or_data']").unbind('change');
      $("input[type='radio'][name='odt_structure_or_data']").unbind('change');
      $("input[type='radio'][name='texytext_structure_or_data']").unbind('change');
      $("input[type='radio'][name='htmlword_structure_or_data']").unbind('change');
      $("input[type='radio'][name='sql_structure_or_data']").unbind('change');
      $("input[type='radio'][name='output_format']").unbind('change');
      $("#checkbox_sql_include_comments").unbind('change');
      $("#plugins").unbind('change');
      $("input[type='radio'][name='quick_or_custom']").unbind('change');
      $("input[type='radio'][name='allrows']").unbind('change');
  });
  
  AJAX.registerOnload('export.js', function () {
      /**
       * Toggles the hiding and showing of each plugin's options
       * according to the currently selected plugin from the dropdown list
       */
      $("#plugins").change(function () {
          $("#format_specific_opts div.format_specific_options").hide();
          var selected_plugin_name = $("#plugins option:selected").val();
          $("#" + selected_plugin_name + "_options").show();
      });
  
      /**
       * Toggles the enabling and disabling of the SQL plugin's comment options that apply only when exporting structure
       */
      $("input[type='radio'][name='sql_structure_or_data']").change(function () {
          var comments_are_present = $("#checkbox_sql_include_comments").prop("checked");
          var show = $("input[type='radio'][name='sql_structure_or_data']:checked").val();
          if (show == 'data') {
              // disable the SQL comment options
              if (comments_are_present) {
                  $("#checkbox_sql_dates").prop('disabled', true).parent().fadeTo('fast', 0.4);
              }
              $("#checkbox_sql_relation").prop('disabled', true).parent().fadeTo('fast', 0.4);
              $("#checkbox_sql_mime").prop('disabled', true).parent().fadeTo('fast', 0.4);
          } else {
              // enable the SQL comment options
              if (comments_are_present) {
                  $("#checkbox_sql_dates").removeProp('disabled').parent().fadeTo('fast', 1);
              }
              $("#checkbox_sql_relation").removeProp('disabled').parent().fadeTo('fast', 1);
              $("#checkbox_sql_mime").removeProp('disabled').parent().fadeTo('fast', 1);
          }
      });
  });
  
  
  /**
   * Toggles the hiding and showing of plugin structure-specific and data-specific
   * options
   */
  function toggle_structure_data_opts(pluginName)
  {
      var radioFormName = pluginName + "_structure_or_data";
      var dataDiv = "#" + pluginName + "_data";
      var structureDiv = "#" + pluginName + "_structure";
      var show = $("input[type='radio'][name='" + radioFormName + "']:checked").val();
      if (show == 'data') {
          $(dataDiv).slideDown('slow');
          $(structureDiv).slideUp('slow');
      } else {
          $(structureDiv).slideDown('slow');
          if (show == 'structure') {
              $(dataDiv).slideUp('slow');
          } else {
              $(dataDiv).slideDown('slow');
          }
      }
  }
  
  AJAX.registerOnload('export.js', function () {
      $("input[type='radio'][name='latex_structure_or_data']").change(function () {
          toggle_structure_data_opts("latex");
      });
      $("input[type='radio'][name='odt_structure_or_data']").change(function () {
          toggle_structure_data_opts("odt");
      });
      $("input[type='radio'][name='texytext_structure_or_data']").change(function () {
          toggle_structure_data_opts("texytext");
      });
      $("input[type='radio'][name='htmlword_structure_or_data']").change(function () {
          toggle_structure_data_opts("htmlword");
      });
      $("input[type='radio'][name='sql_structure_or_data']").change(function () {
          toggle_structure_data_opts("sql");
      });
  });
  
  /**
   * Toggles the disabling of the "save to file" options
   */
  function toggle_save_to_file()
  {
      if (!$("#radio_dump_asfile").prop("checked")) {
          $("#ul_save_asfile > li").fadeTo('fast', 0.4);
          $("#ul_save_asfile > li > input").prop('disabled', true);
          $("#ul_save_asfile > li> select").prop('disabled', true);
      } else {
          $("#ul_save_asfile > li").fadeTo('fast', 1);
          $("#ul_save_asfile > li > input").prop('disabled', false);
          $("#ul_save_asfile > li> select").prop('disabled', false);
      }
  }
  
  AJAX.registerOnload('export.js', function () {
      toggle_save_to_file();
      $("input[type='radio'][name='output_format']").change(toggle_save_to_file);
  });
  
  /**
   * For SQL plugin, toggles the disabling of the "display comments" options
   */
  function toggle_sql_include_comments()
  {
      $("#checkbox_sql_include_comments").change(function () {
          if (!$("#checkbox_sql_include_comments").prop("checked")) {
              $("#ul_include_comments > li").fadeTo('fast', 0.4);
              $("#ul_include_comments > li > input").prop('disabled', true);
          } else {
              // If structure is not being exported, the comment options for structure should not be enabled
              if ($("#radio_sql_structure_or_data_data").prop("checked")) {
                  $("#text_sql_header_comment").removeProp('disabled').parent("li").fadeTo('fast', 1);
              } else {
                  $("#ul_include_comments > li").fadeTo('fast', 1);
                  $("#ul_include_comments > li > input").removeProp('disabled');
              }
          }
      });
  }
  
  AJAX.registerOnload('export.js', function () {
      /**
       * For SQL plugin, if "CREATE TABLE options" is checked/unchecked, check/uncheck each of its sub-options
       */
      var $create = $("#checkbox_sql_create_table_statements");
      var $create_options = $("#ul_create_table_statements input");
      $create.change(function () {
          $create_options.prop('checked', $(this).prop("checked"));
      });
      $create_options.change(function () {
          if ($create_options.is(":checked")) {
              $create.prop('checked', true);
          }
      });
  
      /**
       * Disables the view output as text option if the output must be saved as a file
       */
      $("#plugins").change(function () {
          var active_plugin = $("#plugins option:selected").val();
          var force_file = $("#force_file_" + active_plugin).val();
          if (force_file == "true") {
              if ($("#radio_dump_asfile").prop('checked') !== true) {
                  $("#radio_dump_asfile").prop('checked', true);
                  toggle_save_to_file();
              }
              $("#radio_view_as_text").prop('disabled', true).parent().fadeTo('fast', 0.4);
          } else {
              $("#radio_view_as_text").prop('disabled', false).parent().fadeTo('fast', 1);
          }
      });
  });
  
  /**
   * Toggles display of options when quick and custom export are selected
   */
  function toggle_quick_or_custom()
  {
      if ($("#radio_custom_export").prop("checked")) {
          $("#databases_and_tables").show();
          $("#rows").show();
          $("#output").show();
          $("#format_specific_opts").show();
          $("#output_quick_export").hide();
          var selected_plugin_name = $("#plugins option:selected").val();
          $("#" + selected_plugin_name + "_options").show();
      } else {
          $("#databases_and_tables").hide();
          $("#rows").hide();
          $("#output").hide();
          $("#format_specific_opts").hide();
          $("#output_quick_export").show();
      }
  }
  var time_out;
  function check_time_out(time_limit)
  {
      if (typeof time_limit === 'undefined' || time_limit === 0) {
          return true;
      }
      //margin of one second to avoid race condition to set/access session variable
      time_limit = time_limit + 1;
      var href = "export.php";
      var params = {
          'ajax_request' : true,
          'token' : PMA_commonParams.get('token'),
          'check_time_out' : true
      };
       clearTimeout(time_out);
       time_out = setTimeout(function(){
           $.get(href, params, function (data) {
              if (data['message'] === 'timeout') {
                  PMA_ajaxShowMessage(
                      '<div class="error">' +
                      PMA_messages.strTimeOutError +
                      '</div>',
                      false
                  );
              }
          });
       }, time_limit * 1000);
  
  }
  AJAX.registerOnload('export.js', function () {
      $("input[type='radio'][name='quick_or_custom']").change(toggle_quick_or_custom);
  
      $("#scroll_to_options_msg").hide();
      $("#format_specific_opts div.format_specific_options")
      .hide()
      .css({
          "border": 0,
          "margin": 0,
          "padding": 0
      })
      .find("h3")
      .remove();
      toggle_quick_or_custom();
      toggle_structure_data_opts($("select#plugins").val());
      toggle_sql_include_comments();
  
      /**
       * Initially disables the "Dump some row(s)" sub-options
       */
      disable_dump_some_rows_sub_options();
  
      /**
       * Disables the "Dump some row(s)" sub-options when it is not selected
       */
      $("input[type='radio'][name='allrows']").change(function () {
          if ($("input[type='radio'][name='allrows']").prop("checked")) {
              enable_dump_some_rows_sub_options();
          } else {
              disable_dump_some_rows_sub_options();
          }
      });
  });
  