text: Jitamin.Column = function(app) {
      this.app = app;
  };
  
  Jitamin.Column.prototype.listen = function() {
      this.dragAndDrop();
  };
  
  Jitamin.Column.prototype.dragAndDrop = function() {
      var self = this;
  
      $(".draggable-row-handle").mouseenter(function() {
          $(this).parent().parent().addClass("draggable-item-hover");
      }).mouseleave(function() {
          $(this).parent().parent().removeClass("draggable-item-hover");
      });
  
      $(".columns-table tbody").sortable({
          forcePlaceholderSize: true,
          handle: "td:first i",
          helper: function(e, ui) {
              ui.children().each(function() {
                  $(this).width($(this).width());
              });
  
              return ui;
          },
          stop: function(event, ui) {
              var column = ui.item;
              column.removeClass("draggable-item-selected");
              self.savePosition(column.data("column-id"), column.index() + 1);
          },
          start: function(event, ui) {
              ui.item.addClass("draggable-item-selected");
          }
      }).disableSelection();
  };
  
  Jitamin.Column.prototype.savePosition = function(columnId, position) {
      var url = $(".columns-table").data("save-position-url");
      var self = this;
  
      this.app.showLoadingIcon();
  
      $.ajax({
          cache: false,
          url: url,
          contentType: "application/json",
          type: "POST",
          processData: false,
          data: JSON.stringify({
              "column_id": columnId,
              "position": position
          }),
          complete: function() {
              self.app.hideLoadingIcon();
          }
      });
  };
  