(function($) {
	$.fn.customizeCheckbox = function(settings) {
		var defaults =  {
			checkboxCssClass: "customizeCbx",
			checkboxCssClassChecked: "customizeCbxChecked",
			checkboxCssClassUnchecked: "customizeCbxUnchecked",
			checkboxSpanText: "customize checkbox",
			toogleCheckedFunction: function(selectSrc,spanDest){
				if(selectSrc.attr("checked")){
					spanDest
						.addClass(defaults.checkboxCssClassChecked)
						.removeClass(defaults.checkboxCssClassUnchecked);
				}else{
					spanDest
						.addClass(defaults.checkboxCssClassUnchecked)
						.removeClass(defaults.checkboxCssClassChecked);
				}
			},
			checkboxBeforeTriggeringClick: function(selectSrc,spanDest){},
			checkboxAfterTriggeringClick: function(selectSrc,spanDest){}
		};
		$.extend(defaults, settings);
		return this.each(function(i,n){
			var currentElem = $(this);
			currentElem
				.after("<span class=\""+defaults.checkboxCssClass+"\"><span>"+defaults.checkboxSpanText+"</span></span>")
				.hide();
			var span = currentElem.next();
			span.bind("click",function(){
				defaults.checkboxBeforeTriggeringClick(currentElem,span);
				currentElem.trigger("click");
				defaults.toogleCheckedFunction(currentElem,$(this));
				defaults.checkboxAfterTriggeringClick(currentElem,span);
			});
			defaults.toogleCheckedFunction(currentElem,span);
		});
	};
})(jQuery);

