$(function() {
	var filters = {};
	
	processFilter = function(filter, id) {
		id == "" ? unsetFilter(filter) : setFilter(filter, id);
	}
	
	setFilter = function(filter, id) {
		filters[filter] = id;
		updateFilters();
	}
	
	unsetFilter = function(filter) {
		delete filters[filter];
		updateFilters();
	}
	
	var updateFilters = function() {
		var filterArray = new Array();
		for (f in filters) {
			filterArray.push(".session-" + f + "-" + filters[f]);
		}
		var filterString = filterArray.join("");
		
		if (filterArray.length == 0) {
			//show everything
			$(".session").addClass("filtered-in").removeClass("filtered-out");
		} else {
			//The ones to show
			$(filterString).addClass("filtered-in").removeClass("filtered-out");
			
			//The ones to hide
			$(".session:not(" + filterString + ")").addClass("filtered-out").removeClass("filtered-in");
		}
		
		//Do the showing and hiding
		$(".filtered-in:hidden").slideDown("fast");
		$(".filtered-out:visible").slideUp("fast", function() { $('.session-long', this).hide() });
		
		//Take care of days
		$(".session-day-title:visible").each(function(n, title) {
			if ($(".session-day-" + title.id.split("-").pop()).filter(".filtered-in").length == 0) $(title).slideUp("fast");
		});
		$(".session-day-title:hidden").each(function(n, title) {
			if ($(".session-day-" + title.id.split("-").pop()).filter(".filtered-in").length > 0) $(title).slideDown("fast");
		});
		
		//show a message
		if ($(".session.filtered-in").length == 0) {
			$("#no-results").html("There are no results that matched this search.").slideDown("slow");
		} else if ('ethics' in filters && filters.ethics == '1') {
			$("#no-results").html("Jurisdictions do not use standardized criteria when considering CLE/CPD course for ethics credit; therefore, not all courses will be approved for ethics credit as indicated.").slideDown("slow");
		} else {
			$("#no-results").slideUp("fast");
		}
	}
	
	handleHeight = function() {
		var sessHeight = window.innerHeight - 355;
		$("#session-list").css("height", sessHeight < 400 ? '' : sessHeight + 'px');
	}
	
	if ($.browser.msie) {
		$("#session-list").css("overflow-x", "hidden");
	} else {
		handleHeight();
		window.onresize = function() { handleHeight(); };
	}
	
	//set up some stuff for the page
	$(".session-more-link").each(function(a, b) {
		$(this).click(function() {
			var id = this.id.split("-").pop();
			var summary = $('#session-long-' + id);
			if (summary.html() == "") {
				var sess = $(this);
				sess.css('cursor', 'wait');
				$.get("", "f=session&id=" + id, function(text, status) {
					if (status == 'success' && text != '') {
						summary.html(text);
					} else {
						summary.html("This session's summary could not be retrieved.");
					}
					summary.slideToggle('fast');
					sess.css('cursor', '');
				});
			} else {
				summary.slideToggle('fast');
			}
		});
	});
});
