(function($) {
  if($.fn.drapper === undefined) {
    throw "$.drapper plugin hasn't been required"
        + "This plugin depends on 'jquery.drapper' plugin. "
        + "See https://github.com/aratak/jquery.drapper/ for details."
  }

  $.drappers = $.extend($.drappers, {
    selectGroup: function() {
      var decoree = this;
      var decoreeType = $(decoree).attr('multiple') ? "checkbox" : "radio";
      var createListItem = function(optionTag, i) {
        var liTag = $(document.createElement("li"));
        optionTag = $(optionTag);

        var inputTag = $(document.createElement("input")).attr({
          'type': decoreeType,
          'name': $(decoree).attr('name'),
          'id': $(decoree).attr('id') + "_" + i,
          'value': optionTag.val(),
          'checked': optionTag.is(':selected')
        });

        var labelTag = $(document.createElement("label")).attr({
          'for': $(decoree).attr('id') + "_" + i
        }).html(optionTag.html().replace(/(<([^>]+)>)/ig,""));

        return liTag.append(inputTag).append(labelTag);
      };

      var removeDecoree = function() {
        return $(decoree).remove();
      }

      var list = $(document.createElement("ul")).attr({
        'data-drapper-list': true
      }).addClass('drapperList drapperRadioGroup');


      $.each($(decoree).find('option'), function(i, optionTag) {
        list.append(createListItem(optionTag, i));
      });

      return decoree.wrapper().append(list) && removeDecoree();
    }
  });
})(jQuery)