ns('Carib.Order.Widgets');

/**
 * Editable table
 * 
 * @version $Id: editable_table.js 418 2009-07-10 13:08:59Z  $
 */
Carib.Order.Widgets.EditableTable = function(config) {
  this.remove_msg = 'Вы уверены, что хотите удалить ?';
  
  this.addEvents({
    edit: true,
    remove: true
  });
  
  Carib.Order.Widgets.EditableTable.superclass.constructor.call(this, config);
}

utils.extend(Carib.Order.Widgets.EditableTable, Carib.Order.Widgets.Table, {
  _controlRenderer: function(record) {
    var $content = $('<div class="control"></div>');
    var $edit_button = $('<a href="javascript:void(0)" class="ui-state-default ui-corner-all" title="Изменить"><span class="ui-icon ui-icon-pencil">&nbsp;</span></a>').appendTo($content);
    $edit_button.click(this.onEdit.createDelegate(this, [record]));
    this._setHover($edit_button);
    $content.append('<div class="cl"></div>');
    var $remove_button = $('<a href="javascript:void(0)" class="ui-state-default ui-corner-all" title="Удалить"><span class="ui-icon ui-icon-minusthick">&nbsp;</span></a>').appendTo($content);
    $remove_button.click(this.removeIf.createDelegate(this, [record]));
    this._setHover($remove_button);
    return { $content: $content };
  },
  
  removeIf: function(record) {
    if(confirm(this.remove_msg)) {
      this.recordset.remove(record.getId());
      this.onRemove(record);
    }
  },
  
  _setHover: function($button) {
    $button.hover(
      this.onOver.createDelegate(this, [$button]),
      this.onOut.createDelegate(this, [$button])
    );
  },
  
  onOver: function($button) {
    $button.addClass('ui-state-hover');
  },
  
  onOut: function($button) {
    $button.removeClass('ui-state-hover');
  },
  
  onEdit: function(record) {
    this.fireEvent('edit', [this, record]);
    return false;
  },
  
  onRemove: function(record) {
    this.fireEvent('remove', [this, record]);
    return false;
  }  
});
