(function($) {
    $.fn.extend({
        niceCheckbox: function(options) {
			var defaults = {
				untickedPath: null,
				tickedPath: null,
				value: 1
			}
			var options = $.extend(defaults, options);
	
			function tickCheckbox(img){
				img = $(img);
				var id = img.attr('id').replace("nicecheckbox-img-", "");
				img.attr('src', options.tickedPath);
				$('#nicecheckbox-input-' + id).val(options.value);
				
				img.removeClass('unchecked');
				img.addClass('checked');
			}
			
			function untickCheckbox(img){
				img = $(img);
				var id = img.attr('id').replace("nicecheckbox-img-", "");
				img.attr('src', options.untickedPath);
				$('#nicecheckbox-input-' + id).val("");
				
				img.removeClass('checked');
				img.addClass('unchecked');
			}
		
			return this.each(function() {
				
			    var obj = $(this);
				var rnd = Math.round(Math.random() * 100000);
				
				var img = $('<img />');
				img.attr('id', 'nicecheckbox-img-' + rnd);
				img.addClass('nice-checkbox');
				obj.after(img);
				
				var hidden_field = $('<input type="hidden" />');
				hidden_field.attr('name', obj.attr('name'));
				hidden_field.attr('id', 'nicecheckbox-input-' + rnd);
				obj.after(hidden_field);
				
				if(obj.attr('checked')){
					tickCheckbox(img);
					img.addClass('checked');
				}else{
					untickCheckbox(img);
					img.addClass('unchecked');
				}
				
				$('label[for=' + obj.attr('id') + ']').click(function(){
					img.click();
				})
				
				img.click(function(){
					if($(this).hasClass('checked')){
						untickCheckbox(this);
					}else{
						tickCheckbox(this);
					}
				});
				
				obj.remove();
			});
        }
    });
})(jQuery);
