(function ($) {
	$.loewy = $.loewy || {};
	
	$.fn.loewyCheckBox = function(options) {
		return this.each(function() {
			if ($(this).is("input[type='checkbox']")) {
				new $.loewy.CheckBox(this,options);
			}
		});
	}
	
	$.loewy.CheckBox = function(element, options) {
		var self = this;
		
		this.options = $.extend({
			width: 13,
			height: 13,
			uncheckedClass: "unchecked",
			checkedClass: "checked"
		}, options);
		
		this.element = element;
		
		this.onMouseUp = function() {
			if (element.checked == true || element.checked == "checked") {
				$(self.element).attr("checked", "");
			} else {
				$(self.element).attr("checked", "checked");
			}

			
			//$(self.element).attr("checked", self.element.checked);
			
			self.onChange();
			
			return true;
		}
		
		this.onChange = function() {
			//alert(self.element.checked);
			if (self.element.checked == true || self.element.checked == "checked") {
				$("#loewy-checkbox-"+self.element.id).removeClass(self.options.uncheckedClass).addClass(self.options.checkedClass);
				
			} else {
				$("#loewy-checkbox-"+self.element.id).removeClass(self.options.checkedClass).addClass(self.options.uncheckedClass);
			}
			
			//return true;
		}
		
		this.init();
	}
	
	$.extend($.loewy.CheckBox.prototype, {
		init: function() {
			var self = this;
			
			var e = $('<div id="loewy-checkbox-'+self.element.id+'" class="loewy-checkbox '+self.options.uncheckedClass+'"><div>');
			
			//hide original checkbox - set display:none cause bugs on Opera!
			$(self.element).before(e).css({
				position: "absolute",
				marginLeft: "-1000px"
			});
			
			if (self.element.checked == true || self.element.checked == "checked") {
				e.removeClass(self.options.uncheckedClass).addClass(self.options.checkedClass);
			}
			
			e.bind("mouseup", self.onMouseUp);
			
			if (jQuery.browser.msie) {	
				//label for="" on IE has some weired click behavior, 
				//just remove the for attribute and bind mouseup event!
				$("label[for='"+self.element.id+"']").each(function() {
					$(this).attr("for","loewy-checkbox-"+self.element.id);
					$(this).bind("mouseup", self.onMouseUp);
				});
				
			} else {
				$(self.element).bind("change", self.onChange);
			}
		}
	});
})(jQuery);
