$(function() {

	// Put checkboxes into spans with class checkbox.
	$(':checkbox').wrap('<span class="checkbox"></span>');

	$('.checkbox').each(function() {
		
		var checkbox = $(this).find(':checkbox');
		
		if(checkbox.attr('class') == 'no-pref') 
			$(this).addClass('no-pref');
		
		if($.browser.msie &&  $.browser.version < 7) {
			$(this).append(''
				+ '<img class="unchecked" src="images/ie6/checkbox_unchecked.gif" />'
				+ '<img class="checked" src="images/ie6/checkbox_checked.gif" />'
			);
		}
		else {
			$(this).append(''
				+ '<img class="unchecked" src="images/checkbox_unchecked.png" />'
				+ '<img class="checked" src="images/checkbox_checked.png" />'
			);
		}
		
	});
	
	// Hide all checked images.
	$('.checked').hide();

	// Show checked images for checked checkboxes.
	$(':checkbox:checked').each(function() {
		$(this).siblings('.unchecked').hide();
		$(this).siblings('.checked').show();
	});

	$('label').bind('click', function() {
		
		$('#' + $(this).attr('for')).each(function() {
			
			var checkbox = $(this).get(0);
			
			if (checkbox.checked && !$(this).hasClass('no-pref')) {
				checkbox.checked = false;
				$(this).siblings('.unchecked').show();
				$(this).siblings('.checked').hide();
				return false;
			}
			else {
				$(this).parents('fieldset').find('.no-pref').each( function() {
					$(this).get(0).checked = false;
					$(this).siblings('.unchecked').show();
					$(this).siblings('.checked').hide();
				});
			}

			checkbox.checked = true;
			$(this).siblings('.unchecked').hide();
			$(this).siblings('.checked').show();
		});
		
		return false;
		
	});

	$('.checkbox').bind('click', function() {
		
		var checkbox = $(this).find(':checkbox').get(0);
		
		if (checkbox.checked && checkbox.className != 'no-pref') {
			checkbox.checked = false;
			$(this).find('.unchecked').show();
			$(this).find('.checked').hide();
			return false;
		}
		else {
			$(this).parents('fieldset').find('.no-pref').each( function() {
				$(this).get(0).checked = false;
				$(this).siblings('.unchecked').show();
				$(this).siblings('.checked').hide();
			});
		}
		
		checkbox.checked = true;
		$(this).find('.unchecked').hide();
		$(this).find('.checked').show();
		
	});

	$('.no-pref').bind('click', function() {
		// Uncheck all
		$(this).parents('fieldset').find(':checkbox').each(function() {
			if (!$(this).hasClass('no-pref')) {
				$(this).get(0).checked = false;
				$(this).siblings('.unchecked').show();
				$(this).siblings('.checked').hide();
			}
		});
	});

	$(':checkbox').hide();

});