(function(){
	$(document).ready(function(){
		$("#homeCarousel").each(function(){
			var elem = this;
			var current_li = null;
			var current_idx = 0;
			var autoTimeout = 0;
			var carouselItems = [];
			
			var clearAutoTimeout = function() {
				if (autoTimeout > 0) {
					window.clearTimeout(autoTimeout);
					autoTimeout = 0;
				}
			};
			
			var setAutoTimeout = function(){
				clearAutoTimeout();
				autoTimeout = window.setTimeout(function(){
					if (!current_li) {
						show( $(carouselItems[0]), null );
						$(carouselItems[0]).addClass("carousel_selected");
					} else {
						$(current_li).removeClass("carousel_selected");
						while (1) {
							n = $(current_li).next();
							
							if (n.length) {
								if ($(n).data("content.carousel")) {
									
									show($(n).data("content.carousel"), $(current_li).data("content.carousel"));
									current_li = n[0];
									$(current_li).addClass("carousel_selected");
									setAutoTimeout();
									break;
								}
							} else {
								
								show( $(carouselItems[0]).data("content.carousel"), $(current_li).data("content.carousel") );
								current_li = carouselItems[0];
								$(current_li).addClass("carousel_selected");
								setAutoTimeout();
								break;
							}
						}
					}
					
				}, 10000);
			};
			
			var show = function(toShow, toHide) {
				$(".carousel_nav li", elem).stop();
				if (toShow) {
					/*
					if (!$(toShow).is(":visible")) {
						$(toShow).css({
							opacity:0,
							display:"block"
						});
					}
					*/
					$(toShow).animate({opacity:1}, {duration:2000, queue:false, complete:function(){
						/*$(this).css({
							opacity:"",
							display:"block"
						});*/
					}});
				}
				
				if (toHide) {
					/*
					if (!$(toHide).is(":visible")) {
						$(toHide).show();
					}
					*/
					$(toHide).animate({opacity:0}, {duration:2000, queue:false, complete:function(){
						/*$(this).css({
							opacity:"",
							display:"none"
						});*/
					}});
				}
				
			};
			
			$(".carousel_nav li", elem).each(function(){
				var li = this;
				var trigger = $("a", li);
				var h = trigger.attr("href").replace(/#/g, '');
				if (h == "") disableTab(li, trigger);
				
				var content = $("#" + h);
				if (!content.length) disableTab(li, trigger);
				
				$(li).data("content.carousel", content);
				carouselItems.push(li);
				
				$(trigger).bind("click.carousel", function(){
					var toShow = null, toHide = null;
					if (!$(li).is(".carousel_selected")) {
						clearAutoTimeout();
						if (current_li) {
							$(current_li).removeClass("carousel_selected");
							//$($(current_li).data("content.carousel")).hide();
							toHide = $($(current_li).data("content.carousel"));
						}
						$(li).addClass("carousel_selected");
						//$(content).show();
						toShow = $(content);
						show(toShow, toHide);
						current_li = li;
						setAutoTimeout();
					}
					
					this.blur();
					return false;
				});
				
				if (current_li || !$(li).is(".carousel_selected")) {
					$(li).removeClass("carousel_selected");
					$(content).hide();
				} else if ($(li).is(".carousel_selected")) {
					current_li = li;
				}
			});
			
			if (!current_li) {
				$(".carousel_nav li", elem).each(function(){
					if ($(this).data("content.carousel")) {
						current_li = this;
						$(this).addClass("carousel_selected");
						$($(this).data("content.carousel")).show();
						return false;
					}
				});
			}
			
			$(".carousel_content", elem).css({
				opacity:0,
				display:"block"
			});
			
			$(current_li).data("content.carousel").css({
				opacity:1
			});
			
			setAutoTimeout();
		});
	});
})(jQuery);