var activeTooltip = null;

$(function () {
	$('.item_tooltip').appendTo('body');
	
	refreshTooltips('#item_list');
	
	$(document).mousemove(function(e) {			
		var middle = $('#item_list').outerWidth() / 2;
		
		var obj = $('#item_list')[0];
		
		do {
			middle += obj.offsetLeft;
		} while (obj = obj.offsetParent);
		
		if (activeTooltip != null) {
			activeTooltip.css({
				left: (e.pageX > middle ? e.pageX - activeTooltip.outerWidth() - 5 : e.pageX + 10), 
				top: e.pageY + 10
			});
		}
	}); 
	
	$('<div id="item_detail_viewer_background"></div><div id="item_detail_viewer"><a href="#" class="close_button">close</a><div class="item_detail_content"></div></div>').appendTo('body').hide();
	
	$('#item_detail_viewer .close_button').click(function() {
		$('#item_detail_viewer_background').hide();
		$('#item_detail_viewer').fadeOut();
		return false;
	})
	
	$('#item_detail_viewer_background').click(function() {
		$('#item_detail_viewer_background').hide();
		$('#item_detail_viewer').fadeOut();
		return false;
	});
	
	$('#item_list li > a > img.item_icon').each(function(i, el) {
		$(el).parent().click(function () {
			$('#item_detail_viewer .item_detail_content').load(
				$(this).attr('href'),
				function()  {
					refreshTooltips('#item_detail_viewer .item_detail_content');
				}
			).html('<img class="loading" src="/img/progress.gif" />');
			
			$('#item_detail_viewer').fadeIn();
			$('#item_detail_viewer_background').show();
			
			return false;
		});
	});
	
	// Capture change events to check boxes.
	
	$('.filter').click(function () {
		$('#text_filter').val('');
		refreshFilters();
	});
	
	$('#show_all_filter').click(function() {
		var checked = $('#show_all_filter').attr('checked');
		
		if (checked) {
			$('.filter').each(function(i, el) {
				$(el).attr('checked', false);
			});
		}
		
		refreshFilters();
	});
	
	var oldValue = '';
	$('#text_filter').keyup(function() {
		if (this.value != oldValue) {
			oldValue = this.value;
		} else {
			return;
		}
		
		if (this.value.length > 0) {
			$('.filter:checked').attr('checked', false);
		}
		
		$('#text_filter').stopTime();
		$('#text_filter').oneTime(300, function() { refreshFilters(); });
	});
	
	refreshFilters();
});

function refreshFilters() {
	var keywordEmpty = $('#text_filter').val().length == 0;
	var checksEmpty = $('.filter:checked').length == 0;

	$('#show_all_filter').attr('checked', keywordEmpty && checksEmpty);
	
	var selectors = 'li';
	
	if (!$('#show_all_filter').attr('checked')) {
		if (!checksEmpty) {
			$('.filter:checked').each(function(i,el) {
				selectors += '.' + el.value;
			});
		} else if (!keywordEmpty) {
			selectors += ':contains(' + $('#text_filter').val() + ')';
		}
	}

	$('#item_list').filterList(selectors);
}

function refreshTooltips(selector) {
	$(selector).find('.item_icon[rel]').hover(
		function() { 
			activeTooltip = $('#' + $(this).attr('rel'));
			activeTooltip.show();
		},
		function() { 
			activeTooltip.hide();
			activeTooltip = null;
		}
	);
}