$(function() {
	

//--- settings
	
	$('ul#application li.topic ul.level1 , span.checked-count').hide();
	
	$('ul#application li.topic span.buttons').show();
	
	$('input').attr('checked' , false);


//--- functions
	
	//- show and hide
	$('a.topic-expand , h1 a').click(function(){
		
		var liID = $(this).parents('li').attr('id');
		
		$('li#' + liID + ' a.topic-expand').toggleClass('open').parents('li').children('ul').toggle();
		
		$('a.topic-expand').html('Expand');
		$('a.topic-expand.open').html('Hide');
		
		$('li#' + liID + ' span.select-buttons').toggle();
		
		$('li#' + liID + ' h1 a').toggleClass('open');
		
		return false;
		
	});
	
	//- hover
	$('a.topic-expand , h1 a').hover(
		function () {
			var liID = $(this).parents('li').attr('id');
			$('li#' + liID + ' a.topic-expand').addClass('hover');
		}, 
		function () {
			var liID = $(this).parents('li').attr('id');
			$('li#' + liID + ' a.topic-expand').removeClass('hover');
		}
	);
	
	$('ul#application li.topic ul.level2 li label').hover(
		function () {
			$(this).css('color' , '#757672');
		}, 
		function () {
			$(this).css('color' , '');
		}
	);
	
	$('ul#application li.topic ul.level2 li input').hover(
		function () {
			$(this).parent('li').children('label').css('color' , '#757672');
		}, 
		function () {
			$(this).parent('li').children('label').css('color' , '');
		}
	);
	
	//- clicking the li (2nd try), label added
	$('ul#application li.topic ul.level2 li label').click(function(){
		
		if ($(this).parent('li').children('input').is(':checked')) {
			
			$(this).parent('li').children('input').attr('checked' , false);
		
			$(this).parent('li').removeClass('selected');
			
			//
			
			var liID = $(this).parents('li').parents('ul').parents('li').attr('id');
			var liIDLevel2 = $(this).parents('li').parents('ul').parents('li').parents('ul').parents('li').attr('id');
			var currentValue = $('li#' + liIDLevel2 + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liIDLevel2 + ' ul.level2 li input').length;
			
			$('li#' + liIDLevel2 + ' span.checked-count span').text(currentValue);
			
			if (currentValue == 0) {
				$('li#' + liIDLevel2 + ' span.checked-count').hide().parents('a').removeClass('items-selected');
			};
			
			var currentValue = $('li#' + liID + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liID + ' ul.level2 li input').length;
			
			if (inputValue > currentValue) {
				$('li#' + liID + ' span.category input').attr('checked' , false);
			};
			
			
		
		} else {
			
			$(this).parent('li').children('input').attr('checked' , true);
		
			$(this).parent('li').addClass('selected');
			
			//
			
			var liID = $(this).parents('li').parents('ul').parents('li').attr('id');
			var liIDLevel2 = $(this).parents('li').parents('ul').parents('li').parents('ul').parents('li').attr('id');
			var currentValue = $('li#' + liIDLevel2 + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liIDLevel2 + ' ul.level2 li input').length;
			
			$('li#' + liIDLevel2 + ' span.checked-count span').text(currentValue);
			$('li#' + liIDLevel2 + ' span.checked-count').fadeIn().parents('a').addClass('items-selected');
			
			if (currentValue == 0) {
				$('li#' + liIDLevel2 + ' span.checked-count').hide().parents('a').removeClass('items-selected');
			};
			
			var currentValue = $('li#' + liID + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liID + ' ul.level2 li input').length;
			
			if (inputValue == currentValue) {
				$('li#' + liID + ' span.category input').attr('checked' , true);
			};
		};
	});
	
	//- clicking the input
	$('ul.level2 li input').click(function(){
	
		var liID = $(this).parents('li').parents('ul').parents('li').attr('id');
		
		if ($(this).attr('checked') == true) {
		
		var liID = $(this).parents('li').parents('ul').parents('li').attr('id');
		
		var liIDTop = $(this).parents('li').parents('ul').parents('li').parents('ul').parents('li').attr('id');
		
			var currentValue = $('li#' + liID + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liID + ' ul.level2 li input').length;
			
			if (inputValue == currentValue) {
				$('li#' + liID + ' span.category input').attr('checked' , true);
			};
			
			var liIDLevel2 = $(this).parents('li').attr('id');
			
			
			
			
			$(this).parent('li').addClass('selected');
			
			var currentValue = $('li#' + liIDTop + ' ul.level2 li input:checked').length;
			$('li#' + liIDTop + ' span.checked-count span').text(currentValue);
			$('li#' + liIDTop + ' span.checked-count').fadeIn().parents('a').addClass('items-selected');

			
			
		} else {
		
		
		
		var liID = $(this).parents('li').parents('ul').parents('li').attr('id');
		
		var liIDTop = $(this).parents('li').parents('ul').parents('li').parents('ul').parents('li').attr('id');
		
		
		
		$(this).parent('li').addClass('selected');
			
			$(this).removeAttr('checked');
			
			$(this).parent('li').removeClass('selected');
			
			// subtract deselected
			var currentValue = $('li#' + liID + ' ul.level2 li input:checked').length;
			var inputValue = $('li#' + liID + ' ul.level2 li input').length;
			
			$('li#' + liID + ' span.checked-count span').text(currentValue);
			
			// hide checked count if none selected
			if (currentValue == 0) {
				$('li#' + liID + ' span.checked-count').hide().parents('a').removeClass('items-selected');
			};
			
			//
			if ($('li#' + liID + ' ul.level2 li input').length > currentValue) {
				$('li#' + liID + ' span.category input').removeAttr('checked');
			};
			
			var currentValue = $('li#' + liIDTop + ' ul.level2 li input:checked').length;
			$('li#' + liIDTop + ' span.checked-count span').text(currentValue);
			
			if (currentValue == 0) {
				$('li#' + liIDTop + ' span.checked-count').hide().parents('a').removeClass('items-selected');
			};
			
		};

	
	});
	
	
	//- select all
	$('a.select-all').click(function(){
		
		var liID = $(this).parents('li').attr('id');
		
		$('li#' + liID + ' input').attr('checked' , true);
		
		$('li#' + liID + ' span.checked-count span').text(0);
		
		$('li#' + liID + ' ul.level2 li').addClass('selected');
		
		$('li#' + liID + ' span.checked-count').fadeIn().parents('a').addClass('items-selected');
		
		var currentValue = $('li#' + liID + ' ul.level2 li input:checked').length;
		$('li#' + liID + ' span.checked-count span').text(currentValue);
		
		return false;
		
	});
	
	//- select none
	$('a.select-none').click(function(){
		
		var liID = $(this).parents('li').attr('id');
		$('li#' + liID + ' input').removeAttr('checked');
		
		$('li#' + liID + ' ul.level2 li').removeClass('selected');
		
		$('li#' + liID + ' span.checked-count').hide().parents('a').removeClass('items-selected');
		$('li#' + liID + ' span.checked-count span').text(0);
		
		return false;
		
	});
	
	//- level1 click
	$('span.category input').click(function(){
	
	if ($(this).attr('checked') == true) {
	
	
		var liID = $(this).parents('li').attr('id');
		var liIDTop = $(this).parents('li').parents('ul').parents('li').attr('id');
		
		$('li#' + liID + ' ul.level2 li input').attr('checked' , true);
		
		$(this).children('input').attr('checked' , true);
		
		$('li#' + liID + ' span.checked-count span').text(0);
		
		$('li#' + liID + ' ul.level2 li').addClass('selected');
		
		$('li#' + liIDTop + ' span.checked-count').fadeIn().parents('a').addClass('items-selected');
		
		var currentValue = $('li#' + liIDTop + ' ul.level2 li input:checked').length;
		$('li#' + liIDTop + ' span.checked-count span').text(currentValue);
		$('li#' + liIDTop + ' span.checked-count').fadeIn();
	
		
		} else {
	
		
	
		var liIDTop = $(this).parents('li').parents('ul').parents('li').attr('id');
		
		var liID = $(this).parents('li').attr('id');
		
		$('li#' + liID + ' ul.level2 li').removeClass('selected');
		
		$('li#' + liID + ' ul.level2 li input').removeAttr('checked');
		
		var currentValue = $('li#' + liIDTop + ' ul.level2 li input:checked').length;
		$('li#' + liIDTop + ' span.checked-count span').text(currentValue);
		
		$(this).children('input').removeAttr('checked');
		
			if (currentValue == 0) {
				$('li#' + liIDTop + ' span.checked-count').hide().parents('a').removeClass('items-selected');
				$('li#' + liID + ' ul.level2 li').removeClass('selected');
			};
		};

	});

});
