function labelClicked(){
	$(this).data('input').click().change();
}

function divClicked(){
	$(this).data('input').click().change();
}

function inputChange(){
	var $this = $(this);
	setTimeout(function(){
		var checked = $this.attr('checked');
		$this.data('div').toggleClass('checked', checked);
	}, 10);
}

function radioClick(){
	$(this).data('radios').change();
}

$(document).ready(function(){
	
	var form = $('#filter form');
	
	$('li', form).each(function(){
		
		$('input[type=checkbox], input[type=radio]', $(this)).each(function(){
			
			var $this   = $(this);
			var name    = $this.attr('name');
			var type    = $this.attr('type');
			var id      = $this.attr('id');
			var checked = $this.attr('checked');
			
			var input_div = $('<div class="input '+(checked ? ' checked' : '')+'"></div>').data('input', $this);
			$this.after(input_div);
			
			if (id)
			{
				$('label[for='+id+']').click(labelClicked).data('input', $this);
			}
			
			input_div.click(divClicked);
			
			$this.data('div', input_div).change(inputChange).hide();
			
			if (type=='radio') {
				$this
					.data('radios', $('input[name='+name+']', form).not('#'+id))
					.click(radioClick)
					;
			}
		});
	});
    
})

