define([

'jquery'

], function ($) {

function syncCssClasses ($dest, $src, adapter) {
  var classes, replacements = [], adapted;

  classes = $.trim($dest.attr('class'));

  if (classes) {
    classes = '' + classes; // for IE which returns object

    $(classes.split(/\s+/)).each(function () {
      // Save all Select2 classes
      if (this.indexOf('select2-') === 0) {
        replacements.push(this);
      }
    });
  }

  classes = $.trim($src.attr('class'));

  if (classes) {
    classes = '' + classes; // for IE which returns object

    $(classes.split(/\s+/)).each(function () {
      // Only adapt non-Select2 classes
      if (this.indexOf('select2-') !== 0) {
        adapted = adapter(this);

        if (adapted != null) {
          replacements.push(adapted);
        }
      }
    });
  }

  $dest.attr('class', replacements.join(' '));
}

return {
  syncCssClasses: syncCssClasses
};

});