// Indicateur de chargement
hide_ajax_loading_indicator = false
$(function() {
  var started = 0
  $("#loading").ajaxStart(function() {
    if(hide_ajax_loading_indicator) {
      hide_ajax_loading_indicator = false
    } else {
      ++started
      $(this).fadeIn()
    }
  })
  $("#loading").ajaxStop(function() {
    --started
    if(started <= 0)
      $(this).fadeOut()
  });
})

// Formulaire AJAX supportant l'envoi de fichiers
$.fn.file_upload_ajax_form = function() {
  return $(this).ajaxForm({
    dataType: "html",
    data: {format: "js"},
    //beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
    success: function(html) {
      var js = html.replace(/^<pre\b.*?>/, "").replace(/<\/pre>$/, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&")
      eval(js)
    }
  })
}

// Zone cliquables
$(function() {
  $(".clickable").each(function() {
    $(this).css("cursor", "pointer").click(function() {
      var $link = $("a:first", this)
      if($link.length > 0)
        window.location = $link.attr("href")
    })
  })
})

$.fn.make_datatable = function(options) {
  return $(this).each(function() {
    var $table = $(this)
    var sorting = []
    $("thead:first th", $table).each(function(i) {
      if($(this).attr("sort"))
        sorting.push([i, $(this).attr("sort")])
    })
    $table.dataTable($.extend(options, {
      asStripClasses: ['even', 'odd'],
      aaSorting: sorting,
      bStateSave: false,
      instance: $table.attr("class") + "-" + $table.attr("id"),
      bJQueryUI: true
    }))

    $table.parents(".dataTables_wrapper:first").addClass("clearfix")
    var $clearfix_before = $("<div>").addClass("clearfix")
    var $clearfix_after = $("<div>").addClass("clearfix")
    $table.prevAll().appendTo($clearfix_before)
    $table.nextAll().appendTo($clearfix_after)
    $table.before($clearfix_before)
    $table.after($clearfix_after)
  })
}
