/*
 * Traderクラス
 *
 *--------------------------------------------------------------------- */
var Trader = Class.create();

Trader.TRADER_ID_PREFIX = 'trader_';

Trader.prototype = {

  /*
   * Instance properties
   *
   *--------------------------------------------------------------------- */
  element: null,
  traderId: null,
  traderName: null,
  order: null,
  isNew: false,

  /*
   * Constructor
   *
   *--------------------------------------------------------------------- */
  initialize: function(option, isNew) {

    /*
     * 与えられたオプションからタグの生成に必須となる値を取得する。
     */
    var traderId = option.traderId;
    var traderName = option.traderName;
    var order = option.order;

    /*
     * 業者を構成する要素のIDを設定する。
     */
    var decorateTraderId = Trader.TRADER_ID_PREFIX + traderId;

    /*
     * 業者を構成する要素を生成する。
     */
    var trader = Builder.node('li', {id: decorateTraderId, className: 'trader'});

    /*
     * プロパティを設定し, 反映させる。
     */
    this.element = trader;
    this.traderId = traderId;
    this.traderName = traderName;
    this.order = order;
    this.isNew = (typeof isNew == 'undefined') ? false : isNew;
    this.reflect();

  },

  /*
   * getElement
   *
   *--------------------------------------------------------------------- */
  getElement: function() {
    return this.element;
  },

  /*
   * getTraderId
   *
   *--------------------------------------------------------------------- */
  getTraderId: function() {
    return this.traderId;
  },

  /*
   * setTraderName
   *
   *--------------------------------------------------------------------- */
  setTraderName: function(traderName) {
    this.traderName = traderName;
  },

  /*
   * getTraderName
   *
   *--------------------------------------------------------------------- */
  getTraderName: function() {
    return this.traderName;
  },

  /*
   * getOrder
   *
   *--------------------------------------------------------------------- */
  getOrder: function() {
    return this.order;
  },

  /*
   * setOrder
   *
   *--------------------------------------------------------------------- */
  setOrder: function(order) {
    this.order = order;
  },

  /*
   * reflect
   *
   *--------------------------------------------------------------------- */
  reflect: function() {
    this.element.innerHTML = this.traderName;
  },

  /**
   * toJson
   *
   */
  toJson: function() {
    return {
      id: this.traderId,
      name: this.traderName,
      order: this.order,
      is_new: (this.isNew ? 1 : 0)
    };
  }

};

