jQuery(document).ready(function($){

	/**
	* Function to filter search results
	* 
	* @return null
	*/
	jQuery.filterResults = function(){
	
		// Loop through each search result
		jQuery.each($('.search-result'), function() {
			
			// Reference to the current search result
			var search_result = $(this);
			// Whether or not to display the result
			var show = true;
			
			// Remove all filters from filter list
			$('.filter-results ul li').remove();
			
			// Loop through each filter
			jQuery.each($('#filter input:checked'), function() {
			
				// Reference to the current filter
				var filter = $(this).attr('id');
				
				// If the current search result doesn't have the ticked filter
				if( ! $(search_result).is('.' + filter)) {

					// Don't show the search result
					show = false;
				}
				
				// Add filter to filter list
				$('.filter-results ul').prepend('<li>' + $(this).attr('value') + '</li>');
			
			});
			
			// If set to show the search result
			if(show){

				// If not already shown
				if( ! $(search_result).hasClass('shown')) {
					// show the search result
					$(search_result).slideDown(500).fadeTo(500, 1.0).removeClass('hidden').addClass('shown');
				}
			
			// Otherwise, not set to show the search result
			} else {
			
				// If not already hidden
				if( ! $(search_result).hasClass('hidden')) {
					// hide the search result
					$(search_result).fadeTo(500, 0.5).slideUp(500).removeClass('shown').addClass('hidden');
				}

			}
			
	    });
		
		// Result count
		var result_count = $('.search-result.shown').length;
		
		// Filter count
		var filter_count = $('#filter input:checked').length;
		
		// If at least one filter, 
		if(filter_count > 0) {
			// change filter list prefix
			$('.filter-results p').html('<strong>Filter:</strong> showing properties with all of the following:');
		} else {
			// change filter list prefix
			$('.filter-results p').html('<strong>Filter:</strong> showing all properties');
		}
	
		// If no results, display message
		if(result_count == 0) {
			$('#filter-noresults').fadeIn(500);
		// Otherwise, hide message
		} else {
			$('#filter-noresults').fadeOut(500);
		}
	
	}

	// When a checkbox is ticked or unticked
    $('#filter input').change(function() {
		// Filter results
		$.filterResults();  
	});
	
	// When a clear filter link is clicked
	$('a.clear-filter').click(function() {
		// Untick each checkbox
		$('input.filter_checkbox').attr('checked', false);
		
		// Filter results
		$.filterResults();  
	
		// Prevent link from clicking through
		return false;
	});
	
	// When a dropdown clear filter link is clicked
	$('a.clear-filter-2').click(function() {
		// Untick each checkbox
		$('input.filter_checkbox_2').attr('checked', false);
		
		// Prevent link from clicking through
		return false;
	});
	
	// Filter results on page load in case checkboxes are pre-ticked
	$.filterResults();
    
});
