$(function() {
	$.global = {
		slideshowAnimating : false,
		slideshowAutoSlide : 1,
		footerLinksShown : false,
		sponsorTotalWidth : 0,
		allowFormSubmit : true,
		defaultFormAction : null,
		restArray : new Array()
	};

	//fixNavWidths();
	
	$("[rel*=external]").each(function() {
		$(this).attr("target", "_blank");
	}).click(function() {
		recordOutboundLink(this, 'Outbound Links', $(this).attr("href")); 
		return false;
	});
	
	$(".tabbed_content .tabs li").click(function() {
		$(".tabbed_content .tabs .active").removeClass("active");
		$(this).addClass("active");
		var num = $(this).index();
		$(".tabbed_content .content.active").fadeOut("fast", function() {
			$(this).removeClass("active");
			$(".tabbed_content .content").eq(num).fadeIn("fast", function() {
				$(this).addClass("active");
			});
		});
		return false;
	});
	
	$("#call_login_dropdown a:contains('Login')").click(function() {
		$(this).attr("href", "#");
		$(".loginbar .login_dropdown").slideToggle();
		return false;
	});
	$(document).keypress(function(e) {
		if(e.which == 96) {
			$(".loginbar .login_dropdown").slideToggle();
		}
	});
	
	
	$(".titles a").click(function() {
		if(keepTrucking) {
			keepTrucking = false;
		}
		else {
			clearInterval(slideshowTimer);
		}
		if(!$.global.slideshowAnimating) {
			$.global.slideshowAnimating = true;
			var beginIndex = 0;
			var endIndex = 0;
			var direction = 1;
			$(".titles a").each(function() {
				if ($(this).hasClass("active")) {
					beginIndex = $(this).removeClass("active").index();
				}
			});
			endIndex = $(this).addClass("active").index();
			if (endIndex < beginIndex) direction = -1;
			var toShow = $(".slideshow .picture_container .picture").eq(endIndex);
			if (!toShow.hasClass("active")) {
				toShow.find(".caption").hide();
				$(".slideshow .picture_container .picture.active").stop().animate({
					"top" : (-315 * direction)
				}, 400, function() {
					$(this).removeClass("active");
				});
				toShow.css("top", (315 * direction)).stop().animate({
					"top" : 0			
				}, 400, function() {
					toShow.find(".caption").fadeIn(200);
					$(this).addClass("active");
					$.global.slideshowAnimating = false;
				});
			}
			else {
				$.global.slideshowAnimating = false;
			}
		}
		return false;
	});
	
	var keepTrucking = false;
	var slideshowTimer = setInterval(function() {
		$.global.slideshowAutoSlide = ($.global.slideshowAutoSlide + 1) % 5;
		keepTrucking = true;
		$(".titles a").eq($.global.slideshowAutoSlide).click();
	}, 5000);
	
	$(".footer_links .dropdown_link").click(function() {
		$(".footer_links .dropdown").slideToggle();
		$(this).toggleClass("up");
		
		if ($.global.footerLinksShown) {
			$(this).text("show footer links");
		}
		else {
			$(this).text("hide footer links");
		}
		
		$.global.footerLinksShown = !$.global.footerLinksShown;
		return false;
	});
	
	$.global.defaultFormAction = new Function($("#Form").attr("onsubmit"));
	
	$("#Form").submit(function() {
		return $.global.allowFormSubmit; 
	});
	
	$("#frmHotelSearch").live("keyup", function(e) {
		if (e.which == 13) { 
			ows.Fetch(modHotelSearch,0,'action=search'); 
			return false;
		}
		$.global.allowFormSubmit = false;
	});
	
	$("#moreResourcesLink").live("click", function() {
		$("#moreResources").slideToggle();
		return false;
	});
	
	$(".rss_feed.obscured_links li a.link").each(function() {
		$(this).attr("href", $(this).find(".obscured_link").text());
	});
	
	$("h3.expandable").click(function() {
		$(this).next().slideToggle();
		if ($(this).find(".expand").text() == "-") {
			$(this).find(".expand").text("+")
		}
		else {
			$(this).find(".expand").text("-")
		}
	});
	
	$("#restaurant_filter").keyup(function() {
		var needle = $(this).val().toLowerCase();
		var restList = $(".restaurant_results tr");
		for (var i = 0; i < $.global.restArray.length; i++) {
			if ($.global.restArray[i].indexOf(needle) >= 0) {
				restList.eq(i).show();
			}
			else {
				restList.eq(i).hide();
			}
		}
	});
	$("#restaurant_filter").keyup(function(e) {
		if($(this).val().length > 2 || $(this).val() == "") {
			updateRestList();
		}
		if($(this).val().length == 5){
			_gaq.push(['_trackEvent', 'Restaurants', 'RestaurantSearchKeystroke', $(this).val()]);
		}
		else if(e.which == 13){
			_gaq.push(['_trackEvent', 'Restaurants', 'RestaurantSearchEnter', $(this).val()]);
		}
	});
	
	$(".cuisine_list a").not(".more").click(function() {
		_gaq.push(['_trackEvent', 'Restaurants', 'CuisineFilter', 'Cuisine: ' + $(this).text()]);

		if(!$(this).hasClass("disabled")) {
			var cid = $(this).attr("href").substring(1);
			var rem = $("<a class='remove'>X</a>");
			rem.click(function() {
				var li = $(this).parents(".filter")
				li.find("a").removeClass("disabled").eq(0).prependTo(".cuisine_list");
				li.remove();
				updateRestList();
				if($("ul.current_filter li").length == 0) $("ul.current_filter").hide();
				return false;
			});
			$(this).addClass("disabled");
			var li = $("<li />")
			li.attr("id", "cf" + cid).addClass("filter").append($(this)).append(rem);
			li.appendTo("ul.current_filter");
			$("ul.current_filter").show();
						
			updateRestList();
		}
		
		return false;
	});
	
	$(".cuisine_list a").not(".more").each(function() {
		var cname = $(this).text();
		$(this).addClass("hidden");
		if(cname.match(/(American|Southern|Seafood|Barbecue|Italian|Steak|Fine Dining|African|Bars \& Grills|Mexican)/) != null) {
			$(this).removeClass("hidden");
		}
	});
	$(".cuisine_list a.more").click(function() {
		$(".cuisine_list .hidden").removeClass("hidden");
		$(this).remove();
		return false;
	});
	
	fixMovieURLs();	
	fixActionMenuHover();
});

function updateRestList() {
	var str = $("#restaurant_filter").val();
	var cat = "";
	$("ul.current_filter li").each(function() {
		cat += $(this).attr("id").substring(2);
		cat += "|"
	});
	var cat = cat.substring(0,cat.length - 1);
	var qs = "q=" + str + "&cat=" + cat;
	ows.Fetch(restModID,-1,qs);
}

function startSponsorSlider() {
	var leftFilled = 0;
	var sponsorLogos = $(".sponsor_slider a");

	for(var i = 0; i < sponsorLogos.length; i++) {
		$.global.sponsorTotalWidth = leftFilled;
		//initialize spacing
		var el = $(sponsorLogos[i]);
		var w = el.width();
		el.css("left", leftFilled);
		leftFilled += 20; //right padding
		leftFilled += w; //width

		console.log("initializing slider " + i);
		animateSlider(el, w);
	}
}

function animateSlider(el, w) {
	var cur = parseInt(el.css("left"));
	el.animate({
		"left" : cur - w
	}, 4000, function() {
		if (cur - w < -120) {
			el.css("left", ($.global.sponsorTotalWidth - 120));
		}
		animateSlider(el, w);
	});
}

function fixNavPadding() {
	var w = $(".navigation ul").width();
	var padLeft = parseInt($(".navigation li.root").css("paddingLeft"));
	var padRight = parseInt($(".navigation li.root").css("paddingRight"));
	
	var currentWidth = 0;
	var currentPadding = 0;
	var numElements = 0;
	$(".navigation li.root").each(function() {
		currentWidth += ($(this).outerWidth());
		currentPadding += (padLeft + padRight);
		numElements++;
	});
	
	var padToAdd = (w - currentWidth) / (2 * numElements); //Math.floor((w - currentWidth) / (2 * numElements));
	
	$(".navigation li.root").each(function() {
		$(this).css("paddingLeft", padLeft + padToAdd)
			.css("paddingRight", padRight + padToAdd);
	});
}

function fixNavWidths() {
	var w = $(".navigation ul").width();
	var navs = $(".navigation li.root")
	navs.css({
		width : w / navs.length - 2,
		padding : 0
	});
}

function fixMovieURLs() {
	var curZip = getZipCode();
	$(".rss_feed.movies a").each(function() {
		$(this).attr("href", $(this).attr("href") + "&amp;location=" + curZip);
		$(this).attr("target", "_blank");
	});
}

function getZipCode() {
	var zipArray = ["37406","99202"];
	return zipArray[pid];
}

function recordOutboundLink(link, category, action) {
	_gat._getTrackerByName()._trackEvent(category, action);
	setTimeout('document.location = "' + link.href + '"', 100);
}

function fixActionMenuHover() {
	var target;
	if ($(".ModuleOptionsMenu-White").length > 1) {
		$(".ModuleOptionsMenu-White").hover(function() {
			var target = $(this);
			if(!target.hasClass("hidden")) {
				$(".ModuleOptionsMenu-White").not(target).parents(".container_actions").addClass("hidden");
			}
		}, function() {
			$(".ModuleOptionsMenu-White").parents(".container_actions").removeClass("hidden");
		});
	}
}
