(function($){
    $.fn.misticallist = function(options){
      var defaults = {
        values: [],
        list: null
      },
      settings = $.extend({}, defaults, options);
      return this.each(function(){
        var idList = 'aaa';
        var idText = 'bbb';
        var divtext = $('<div />', {class: 'input-prepend input-append'}).append(
          $('<button />', {class: 'btn', type: 'button'}).append(
              $('<i />', {class: ' icon-plus-sign'}).click(function () {
                newElement(idText, idList);
              })
            ),
          $('<input />', {type: 'text', class:'span7', id: idText}),
          $('<button />', {class: 'btn', type: 'button'}).append(
              $('<i />', {class: 'icon-ok-circle icon-white'})
            ).click(function () {
              if ($('#'+idText).val().trim() === '') 
                return;
              else if($('#'+idList).data('current') == -1) {
                $('#'+idList).append(
                  $('<option />', {text: $('#'+idText).val()})
                  );
                newElement(idText, idList);
              } else {
                var txt = $('#'+idText).val();
                console.log(txt);
                $('#'+idList+' option:selected').text(txt);
                newElement(idText, idList);
              }
            }),
          $('<button />', {class: 'btn', type: 'button'}).append(
              $('<i />', {class: 'icon-remove-circle'})
            ).click(function () {
                var selemen = $('#'+idList).data('current');
                if (selemen == -1) return;
                $('#'+idList+' option:eq('+selemen+')').remove();
                newElement(idText, idList);
            })
        );
        var divlist = $('<div />').append(
          $('<select />', {id: idList, multiple: 'multiple', class: 'span3'}).click(function () {
              $('#'+idList).data('current', $('#'+idList+' option').index($('#'+idList+' option:selected')));
              $('#'+idText).val($('#'+idList+' option:selected').val());
            }).data('current', -1)
          );
        $(this).append(divtext).append(divlist);
      });
      function newElement(idText, idList){
        $('#'+idList).data('current', -1);
        $('#'+idText).val('');
      } 
    };
  })(jQuery);

  //$("#div3").misticallist();