var LSformElement_jsonCompositeAttribute_field_value_component = new Class({
    initialize: function(div,name,field_name,field_uuid){
      this.div = div;

      this.field_name = field_name;
      this.field_uuid = field_uuid;
      this.field_params = varLSdefault.LSjsConfig[this.field_name];

      this.name = name;
      this.params = this.field_params['components'][this.name];

      this.label = div.getElement('label');
      if (this.params.type == 'select_list') {
        this.select = div.getElement('select');
      }
      else {
        // Type text
        this.ul = div.getElement('ul');
        this.lis = {};
        this.values = {};
        this.ul.getElements('li').each(function(li) {
          this.initTextComponentValue(li);
        }, this);
      }
    },

    initTextComponentValue: function(li) {
      var uuid = generate_uuid();
      this.lis[uuid] = li;
      this.values[uuid] = new LSformElement_jsonCompositeAttribute_field_value_component_text_value(this,li);
    },

    onAddTextValueBtnClick: function(after) {
      var li = new Element('li');
      var input = new Element('input');
      input.type='text';
      input.name=this.field_name+'__'+this.name+'__'+this.field_uuid+'[]';
      input.injectInside(li);
      li.injectAfter(after.li);
      this.initTextComponentValue(li);
    },

    onRemoveTextValueBtnClick: function(value) {
      if (this.ul.getElements('li').length == 1) {
        value.clear.bind(value)();
      }
      else {
        value.remove.bind(value)();
      }
    },

    clear: function() {
      if (this.params.type == 'select_list') {
        this.select.selectedIndex=-1;
      }
      else {
        Object.each(this.values, function(value) {
          value.clear();
        }, this);
      }
    }
});
