// Generated by CoffeeScript 1.8.0 (function() {

var COLOURS, post, query, query_again, querying, setColour;

COLOURS = 'white red yellow green cyan blue magenta'.split(' ');

window.populate_accounts = function(id) {
  var $el, a, account, _i, _len, _results;
  $el = $(id);
  _results = [];
  for (_i = 0, _len = accounts.length; _i < _len; _i++) {
    account = accounts[_i];
    a = $('<a role="button" class="btn btn-default active" />');
    a.text(account.name);
    a.append('<br/>');
    a.append($('<span class="small">').text(account.number));
    a.data({
      id: account.id
    });
    _results.push($el.append(a));
  }
  return _results;
};

post = function(page, data) {
  return $.ajax({
    url: "q/" + page,
    method: 'post',
    contentType: 'application/json; charset=UTF-8',
    dataType: page.match(/[^.]+$/)[0],
    data: JSON.stringify(data)
  });
};

querying = false;

query_again = false;

query = function() {
  var req;
  if (querying) {
    query_again = true;
    return;
  }
  querying = true;
  query_again = false;
  $('#content').html('One moment...');
  req = post('search.html', {
    order: $('#order').val(),
    date_start: $('#date-start').val(),
    date_end: $('#date-end').val(),
    search: $('#text').val(),
    type: $('#type .active').data('type'),
    accounts: $('#account-buttons .active').map(function() {
      return $(this).data('id');
    }).toArray(),
    colours: $('#colour .active').map(function() {
      return this.className.match(/colour-(\w+)/)[1];
    }).toArray()
  });
  req.done(function(result) {
    return $('#content').html(result);
  });
  req.fail(function() {
    return alert('Query failed');
  });
  return req.always(function() {
    querying = false;
    if (query_again) {
      return query();
    }
  });
};

query = _.debounce(query, 300);

setColour = function(transactionId, colour) {
  return post('colour.json', {
    id: transactionId,
    colour: colour
  });
};

$(function() {
  var $accountButtons, $picker, $typeButtons, closePicker, i, k, months, range;
  months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
  range = {
    end: new Date
  };
  range.end.setDate(1);
  while (range.end.getMonth() !== 6) {
    range.end.setMonth(range.end.getMonth() - 1);
  }
  range.start = new Date(range.end);
  range.start.setFullYear(range.start.getFullYear() - 1);
  range.end.setDate(range.end.getDate() - 1);
  for (k in range) {
    i = range[k];
    $("#date-" + k).val("" + (i.getDate()) + " " + months[i.getMonth()] + " " + (i.getFullYear()));
  }
  $('.input-daterange').datepicker({
    format: "d M yyyy",
    startView: 2,
    todayBtn: 'linked',
    autoclose: true
  }).on('changeDate', query);
  $('#order').on('change', query);
  $('date-range').on('change', 'input', query);
  $('#text').on('change keyup', query);
  $('#colour').on('click', 'a', query);
  $accountButtons = $('#account-buttons a');
  $accountButtons.on('click', query);
  $('#account-button-bulk').on('click', 'a', function(e) {
    var set;
    set = $(e.currentTarget).data('set');
    $accountButtons.toggleClass('active', set === 'on');
    return query();
  });
  $typeButtons = $('#type a');
  $('#type').on('click', 'a', function(e) {
    if ($(e.currentTarget).hasClass('active')) {
      return;
    }
    $typeButtons.each(function() {
      return $(this).toggleClass('active', this === e.currentTarget);
    });
    return query();
  });
  $picker = null;
  $('body').on('click', function(e) {
    var target;
    target = e.currentTarget;
    if (!($picker && (target === $picker[0] || $picker.find(target)[0]))) {
      return closePicker();
    }
  });
  closePicker = function() {
    if ($picker) {
      $picker.remove();
    }
    return $picker = null;
  };
  $('#content').on('click', 'td.colour a.picker', function(e) {
    var $td, $tr, _i, _len;
    e.stopPropagation();
    closePicker();
    $tr = $(e.currentTarget).parents('tr').first();
    $td = $tr.find('td.colour');
    $picker = $('<ul class="colours">');
    for (_i = 0, _len = COLOURS.length; _i < _len; _i++) {
      i = COLOURS[_i];
      $picker.append($('<li>').addClass("colour-" + i).append('<a href="javascript:">'));
    }
    $picker.appendTo($td);
    return $picker.on('click', 'a', function(e) {
      var $li, colour, op;
      $li = $(e.currentTarget).parents('li').first();
      colour = $li[0].className.match(/colour-(\w+)/)[1];
      op = setColour($tr.data('id'), colour);
      op.fail(function() {
        return alert('Something went wrong. Try reloading?');
      });
      op.done(function() {
        return $tr[0].className = $tr[0].className.replace(/colour-\w+/, "colour-" + colour);
      });
      return closePicker();
    });
  });
  return query();
});

}).call(this);

//# sourceMappingURL=main.js.map