(function($, window, undefined) {
	var ie = /*@cc_on!@*/false;
	if(ie) {
		$('body').addClass('ie');
	}

	var fadeTime = 350,
		featureDuration = 10000;

	var current = 1,
		height = 0,
		feature = $('#feature'),
		featureList = $('#feature-list'),
		items = feature.find('.feature-item');

	items.each(function(i, item) {
		item = $(item);
		height = Math.max(height, item.height());
		if(!item.hasClass('active')) {
			item.hide();
		}
		item.addClass('feature-item-measured');
	});
	featureList.height(height);

	var show = function(id) {
		var hide = items.filter('.active'),
			hideId = hide.attr('id').replace(/^feature-/, ''),
			show = $('#feature-' + id);
		if(!show.length) {
			return;
		}

		current = id;
		window.location.hash = '#feature=' + current;

		hide.fadeOut(fadeTime).removeClass('active');
		show.fadeIn(fadeTime).addClass('active');

		$('#feature-nav .active').removeClass('active');
		$('#feature-nav-' + id).addClass('active');
	};

	var cycle = function() {
		if(feature.hasClass('clicked')) {
			return;
		}
		var length = $('#feature-nav li').length;
		show(current == length ? 1 : current + 1);
		setTimeout(cycle, featureDuration);
	};
	setTimeout(cycle, featureDuration);

	$('#feature-nav button').live('click', function(e) {
		var button = $(this),
			item = button.closest('li'),
			id = item.attr('id').replace(/^feature-nav-/, '');
		show(id);
	});

	var hash = window.location.hash.match(/^#?feature=(\d+)$/);
	if(hash) {
		if($('#feature-' + hash[1]).length) {
			feature.addClass('clicked');
			show(hash[1]);
		}

		feature.click(function(e) {
			feature.addClass('clicked');
		});
	}

	// IE 7 fix
	if(document.getElementById('feature-nav').parentNode != document.getElementById('feature-list')) {
		$('#feature-list').append($('#feature-nav'));
	}
	
})(jQuery, this);
