/***
**  JQUERY MINIBUTTON PLUGIN
**	WRITTEN BY TOM ROMBAUT
**  Version 0.1
**  11/2009
**  DEPENDENCIES : JQUERY 1.3.1+
***/

var MiniButton = function(element, options) {
	var conf = $.extend({}, $.fn.minibutton.defaults, options);
	var button = $(element);
	var initialize = function() {
		button.addClass("mini-button");
		button.append($("<div class='mb-inner-button'><span>"+conf.text+"</span></div>"));
		if(conf.icon){
			$(".mb-inner-button",button).prepend($("<img src='"+conf.icon+"' class='mb-icon'/>"));
		}
		button.hover(function(){
			$(this).addClass(conf.hoverclass);
		},function(){
			$(this).removeClass(conf.hoverclass);
		});	
		$("span,.mb-inner-button",button).hover(function(){
			$(this).addClass(conf.hoverclass);
		});	
		button.mousedown(function(){
			$(this).addClass(conf.downclass);
		});
		button.mouseup(function(){
			$(this).removeClass(conf.downclass);
		});
		button.mouseout(function(e){
			if(!$(e.target).parent(0).hasClass("mini-button") && $(e.target).parent(0).parent(0).hasClass("mini-button")){
				$(this).removeClass(conf.downclass);
				$(this).removeClass(conf.hoverclass);
			}
		});
		button.click(function(){
			return button.onclick();			
		});	
	};	
	button.onclick = function(){
		if(!button.hasClass(conf.disableclass)){
			if($.isFunction(conf.onclick))
				return conf.onclick();
		}
	};
	button.disable = function(){
		button.addClass(conf.disableclass);
	};
	button.enable = function(){
		button.removeClass(conf.disableclass);
	};
	initialize();
	return button;
};

(function($) {	
	$.fn.minibutton = function(options) {
		return this.each(function() {
			var element = $(this);
			// Return early if this element already has a plugin instance
			if (element.data('minibutton')) return;
			// pass options to plugin constructor
			var w = new MiniButton(this, options);
			// Store plugin object in this element's data
			element.data('minibutton', w);
		});
	};
	
})(jQuery);

$.fn.minibutton.defaults = {
	text			:	"button-text",
	icon			:	'',
	hoverclass		:	"mb-hover",
	downclass		:	"mb-down",
	disableclass	:	"mb-disabled",
	onclick			: 	false
};