$(document).ready(function()
{
    VideoJS.setupAllWhenReady();
	$('.couch a').fancybox();
	$('.awards li img').easyTooltip({
        xOffset: 5,
        yOffset: -15
    });
	
	$('.references li').each(function(index, element){
		$(element).after('<li class="space"> </li>');
	})
	
	$('article.projects aside').each(function(index, element)
	{
		var $element = $(element);
		$element.addClass('dynamic');
		$element.append('<a href="#" id="sword-reset">Zurücksetzen</a>');
		
		var $input = $element.find('#sword-input');
		var $label = $element.find('#sword-label');
		var $reset = $element.find('#sword-reset');
		var updateTimeout = null;
		var hasFocus = false;
		var hasChanged = false;
		var isLabelVisible = true;
		
		
		function update(immediate)
		{
			var state = (!hasFocus && jQuery.trim($input.val()) == '');
			if (isLabelVisible == state) return;
			isLabelVisible = state;
			
			if (isLabelVisible) {
				if (immediate) {
					$label.show();
					$reset.hide();
				} else {
					$label.fadeIn(400);
					$reset.fadeOut(100);
				}
			} else {
				if (immediate) {
					$label.hide();
					$reset.show();
				} else {
					$label.fadeOut(100);
					$reset.fadeIn(400);
				}
			}
		}
		
		
		function fetch()
		{
			if (updateTimeout != null) clearTimeout(updateTimeout);
			updateTimeout = null;
			hasChanged = false;
			
			$.ajax(
			{
				url: 'index.html',
				data: {ajax:true, sword:$input.val()},
				success: function(msg)
				{
					$('article > section').remove();
					if (window.innerShiv != undefined) $('article').append(innerShiv(msg, false));
					else $('article').append($(msg));
				}
			});
		}
		
		
		$input.focusin(function()
		{
			hasFocus = true;
			update();
		});
		
		
		$input.focusout(function(args)
		{
			hasFocus = false;
			update();
			if (hasChanged) fetch();
		});
		
		
		$input.keydown(function(args)
		{
			if (args.which != 13)
			{
				hasChanged = true;
				if (updateTimeout != null) clearTimeout(updateTimeout);
				updateTimeout = setTimeout(fetch, 200);
			}
			else
			{
				args.preventDefault();
				args.stopImmediatePropagation();
				fetch();
			}
		});
		
		$reset.click(function(args)
		{
			args.preventDefault();
			args.stopImmediatePropagation();
			
			$input.val('');
			hasChanged = true;
			update();
			fetch();
		});
		
		
		update(true);
	});
});
