define(['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults'] , function ($, _, Select2, Defaults){ if ($.fn.select2 == null ) { var thisMethods = ['open', 'close', 'destroy'] ; $.fn.select2 = function (options){ options = options || { } ; if (typeof options === 'object') { this.each(function (){ var instanceOptions = $.extend(true , { } , options); var instance = new Select2($(this), instanceOptions); } ); return this; } else if (typeof options === 'string') { var ret; var args = Array.prototype.slice.call(arguments, 1); this.each(function (){ var instance = $(this).data('select2'); if (instance == null && window.console && console.error) { console.error('The select2(\'' + options + '\') method was called on an ' + 'element that is not using Select2.'); } ret = instance[options].apply(instance, args); } ); if ($.inArray(options, thisMethods) > -1) { return this; } return ret; } else { throw new Error('Invalid arguments for Select2: ' + options) } } ; } if ($.fn.select2.defaults == null ) { $.fn.select2.defaults = Defaults; } return Select2; } );