;(function ($, window, undefined) {
		
	var pluginName = 'activeButtons',
		document = window.document,
		defaults = {
			targetButtonSelector: 'button'
		};

	function Plugin(element, options) {
			this.element = element;
			this.options = $.extend( {}, defaults, options) ;

			this._defaults = defaults;
			this._name = pluginName;
			
			this.init();
	}

	Plugin.prototype.init = function () {
		// подготовим кнопки для правильного отображения
		$(this.element)
			.addClass(this.options['targetButtonSelector'])
			.wrapInner('<span class="' + this.options['targetButtonSelector'] + '-text"/>')
			.append($('<span>', {'class': this.options['targetButtonSelector'] + '-rgt'}))
			.prepend($('<span>', {'class': this.options['targetButtonSelector'] + '-lft'}))

		// модифицируем отображение
		switch($(this.element).data()['type']) {
			case 'default':
				$(this.element).addClass('m-default');
				break;
			case 'primary':
				$(this.element).addClass('m-primary');
				break;
			case 'drop':
				$(this.element).addClass('m-drop');
				break;
			default:				
				$(this.element).addClass('m-default');
		}

		this.run();
	};

	Plugin.prototype.run = function () {
		// повесим события
		$(this.element).on('mousedown', function() {
			var self = $(this);
			self.addClass('m-active');
		});

		$(this.element).on('mouseup mouseleave', function() {
			var self = $(this);
			self.removeClass('m-active');
		});
	};

	$.fn[pluginName] = function (options) {
		return this.each(function () {
			if (!$.data(this, 'plugin_' + pluginName)) {
				$.data(this, 'plugin_' + pluginName, new Plugin(this, options));
			}
		});
	};

}(jQuery, window));