{:uriI"�file:///Users/sean/dev/subdivision_select/app/assets/javascripts/subdivision_select.js?type=application/javascript&pipeline=self&id=ae2338cc06a364526d5d191dd6f6833e3e2a8732a93db484d36bcd899eee604c:ET:load_pathI">/Users/sean/dev/subdivision_select/app/assets/javascripts;F:
filenameI"T/Users/sean/dev/subdivision_select/app/assets/javascripts/subdivision_select.js;T:	nameI"subdivision_select;T:logical_pathI"subdivision_select.self.js;T:content_typeI"application/javascript;T:sourceI"	var SubdivisionSelect = (function() {
  SubdivisionSelect.subdivisionSelector = "select[data-subdivision-selector]";
  SubdivisionSelect.countrySelector = "select[id$=country]";

  function SubdivisionSelect(element) {
    this._countrySelect = element;
    this._subdivisionSelect = $(element).
      closest("form").
      find(SubdivisionSelect.subdivisionSelector);
  };

  SubdivisionSelect.init = function () {
    var klass = this;

    return $(klass.countrySelector).each(function() {
      return new klass(this).init();
    });
  };

  SubdivisionSelect.prototype.init = function() {
    var self = this;

    $(this._countrySelect).change(function() {
      $.ajax( {
        url: "/subdivisions",
        data: { country_code: $(this).val() }
      }).success(function(newSubdivisions) {
        self._clearSubdivisionSelect();
        self._updateSubdivisionSelect(newSubdivisions);
      });
    });
  };

  SubdivisionSelect.prototype._updateSubdivisionSelect = function(newSubdivisions) {
    var self = this;
    var isEmpty = $.isEmptyObject(newSubdivisions);

    $.each(newSubdivisions, function(alpha2, name) {
      self._subdivisionSelect.append($("<option></option>").attr("value", alpha2).text(name));
    });

    // Disable the select if there are no newSubdivisions (and un-do that once there are some)
    self._subdivisionSelect.prop("disabled", isEmpty);

    // If there are none, make it say "none"
    if (isEmpty) {
      self._subdivisionSelect.append($("<option></option>").text("none"));
    }
  };

  // Disabling selects means they won't POST with the form.
  // Solution: right before submiting a form, enabled them.
  SubdivisionSelect.prototype._enabledInputsBeforeSubmit () {
    $('form').bind('submit', function() {
      $(this).find(':input').removeAttr('disabled');
    });
  };

  // Not only empty the select, but:
  // if the first element is blank, add a blank element before all others
  SubdivisionSelect.prototype._clearSubdivisionSelect = function() {
    var includeBlank = this._subdivisionSelect.children().first().text() === "";

    this._subdivisionSelect.empty();

    if (includeBlank) {
      this._subdivisionSelect.append($("<option></option>"));
    }
  };

  return SubdivisionSelect;
})();

$(function() {
  SubdivisionSelect.init();
});
;T:
metadata{:dependencieso:Set:
@hash{	I"environment-version;TTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"bfile-digest:///Users/sean/dev/subdivision_select/app/assets/javascripts/subdivision_select.js;TT:
requiredo;;{�:stubbedo;;{�:
linkso;;{�:charsetI"
utf-8;F:digest"%����K]"t.]���t@���׀���5$�:lengthi	:integrityI"Xni:///sha-256;A_-Aj6FLXSJ0Dy5dnon7dA5Ayej114DZ9w8OyjUkhAY?ct=application/javascript;T:dependencies_digest"%�|�xL�E(����fBwq��@�Z���:�t�:idI"Eae2338cc06a364526d5d191dd6f6833e3e2a8732a93db484d36bcd899eee604c;F:
mtimel+�P�U