text: ﻿
  /**
   * By default DataTables only uses the sAjaxSource variable at initialisation
   * time, however it can be useful to re-read an Ajax source and have the table
   * update. Typically you would need to use the `fnClearTable()` and
   * `fnAddData()` functions, however this wraps it all up in a single function
   * call.
   *
   * DataTables 1.10 provides the `dt-api ajax.url()` and `dt-api ajax.reload()`
   * methods, built-in, to give the same functionality as this plug-in. As such
   * this method is marked deprecated, but is available for use with legacy
   * version of DataTables. Please use the new API if you are used DataTables 1.10
   * or newer.
   *
   *  @name fnReloadAjax
   *  @summary Reload the table's data from the Ajax source
   *  @author [Allan Jardine](http://sprymedia.co.uk)
   *  @deprecated
   *
   *  @param {string} [sNewSource] URL to get the data from. If not give, the
   *    previously used URL is used.
   *  @param {function} [fnCallback] Callback that is executed when the table has
   *    redrawn with the new data
   *  @param {boolean} [bStandingRedraw=false] Standing redraw (don't changing the
   *      paging)
   *
   *  @example
   *    var table = $('#example').dataTable();
   *    
   *    // Example call to load a new file
   *    table.fnReloadAjax( 'media/examples_support/json_source2.txt' );
   *
   *    // Example call to reload from original file
   *    table.fnReloadAjax();
   */
  
  jQuery.fn.dataTableExt.oApi.fnReloadAjax = function (oSettings, sNewSource, fnCallback, bStandingRedraw) {
      // DataTables 1.10 compatibility - if 1.10 then `versionCheck` exists.
      // 1.10's API has ajax reloading built in, so we use those abilities
      // directly.
      if (jQuery.fn.dataTable.versionCheck) {
          var api = new jQuery.fn.dataTable.Api(oSettings);
  
          if (sNewSource) {
              api.ajax.url(sNewSource).load(fnCallback, !bStandingRedraw);
          }
          else {
              api.ajax.reload(fnCallback, !bStandingRedraw);
          }
          return;
      }
  
      if (sNewSource !== undefined && sNewSource !== null) {
          oSettings.sAjaxSource = sNewSource;
      }
  
      // Server-side processing should just call fnDraw
      if (oSettings.oFeatures.bServerSide) {
          this.fnDraw();
          return;
      }
  
      this.oApi._fnProcessingDisplay(oSettings, true);
      var that = this;
      var iStart = oSettings._iDisplayStart;
      var aData = [];
  
      this.oApi._fnServerParams(oSettings, aData);
  
      oSettings.fnServerData.call(oSettings.oInstance, oSettings.sAjaxSource, aData, function (json) {
          /* Clear the old information from the table */
          that.oApi._fnClearTable(oSettings);
  
          /* Got the data - add it to the table */
          var aData = (oSettings.sAjaxDataProp !== "") ?
  			that.oApi._fnGetObjectDataFn(oSettings.sAjaxDataProp)(json) : json;
  
          for (var i = 0 ; i < aData.length ; i++) {
              that.oApi._fnAddData(oSettings, json.aaData[i]);
          }
  
          oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
  
          that.fnDraw();
  
          if (bStandingRedraw === true) {
              oSettings._iDisplayStart = iStart;
              that.oApi._fnCalculateEnd(oSettings);
              that.fnDraw(false);
          }
  
          that.oApi._fnProcessingDisplay(oSettings, false);
  
          /* Callback user function - for event handlers etc */
          if (typeof fnCallback == 'function' && fnCallback !== null) {
              fnCallback(oSettings);
          }
      }, oSettings);
  };
  