$(function()
{
	var slideIndex = 0;
	
	$("#nav li.active").addClass("hold");
	$("#nav ul li").hover(function()
	{
		$(this).addClass("active");
		$(this).children("a").addClass("active");
		$("ul", $(this)).show();
	}, function()
	{
		//if(!$(this).hasClass("hold"))
		//{
			$(this).removeClass("active");
			$(this).children("a").removeClass("active");
		//}
		
		$("ul", $(this)).hide();
	});
	
	$(".json-response").bind("submit", attractionsSearchSubmit);
	$("#attractions-search-form #category-pulldown").bind("change", categoryOnChange);
	$("#attractions-search-form #subcategory-pulldown").bind("change", function() { $("#attractions-search-form").submit(); })
	
	$(".show-attractions-search").click(function() {
		$("#original-content").fadeOut(function() {
			$("#attractions-search").fadeIn();
		});
	});
	
	$("#index #sidebar #slides").cycle(
	{
		fx: "fade",
		speed: 500,
		timeout: 20000,
		before: function()
		{	
			if($("#map-markers li").index($("#map-markers li.active")) == ($("#map-markers li").length-1)){
				slideIndex = 0;
			}else if($("#map-markers li").index($("#map-markers li.active")) == slideIndex){
				slideIndex = slideIndex + 1;
			}
		
			$("#map-markers li:eq("+slideIndex+") a").trigger("click");
		},
		pager: "#sidebar .slideshow ul",
		pagerClick: function(idx,slide)
		{
			slideIndex = idx;
		},
		pagerAnchorBuilder: function(idx, slide)
		{
			return '<li><a href="#">&nbsp;</a></li>';
		}
	});
	
	$("#interior #sidebar #slides").cycle(
	{
		fx: "fade",
		speed: 500,
		timeout: 5000,
		pager: "#sidebar .slideshow ul",
		pagerAnchorBuilder: function(idx, slide)
		{
			return '<li><a href="#">&nbsp;</a></li>';
		}
	});
});

function categoryOnChange(evt) {
	if (evt) evt.preventDefault();
	if ($("#subcategory-pulldown").length == 1) {
	}
	$.getJSON("/attractions/subcat/"+$("#category-pulldown").val(), function(data, textStatus) {
		
		if ($("#subcategory-pulldown").length != 1) {
			var select = document.createElement("select");
			select.id = "subcategory-pulldown";
			select.name = "subcategory-pulldown";
			$("#category-pulldown").after(select);
			
			$(".btn_search").css({"left": "350px"});
			var subcat_pulldown = $("#subcategory-pulldown").get(0);
			
		} else {
			
			var subcat_pulldown = $("#subcategory-pulldown").get(0);
			//remove all current options to make way for new
			for (opt in subcat_pulldown.options) {
				subcat_pulldown.remove(opt);
			}
		}
		addOption(subcat_pulldown,"Choose One...", 0);
		for (i in data.DATA) {
			addOption(subcat_pulldown,data.DATA[i].SUBCATNAME, $("#category-pulldown").val()+"-"+data.DATA[i].SUBCATID);
		}
		$("#subcategory-pulldown").val(0);
		$(".btn_search").click(attractionsSearchSubmit);
		$("#subcategory-pulldown").bind("change", function() { $("#attractions-search-form").submit(); })
	});

}

function attractionsSearchSubmit(evt) {
	if (evt) evt.preventDefault();
	//$("#search-text").val($('#category-pulldown :selected').text()+"->"+$('#subcategory-pulldown :selected').text());
	$("#search-text").val($('#subcategory-pulldown :selected').text());
	$("#attractions-search-response").html("<img src='"+assets+"images/spinner.gif'>");
	$("#attractions-search-response").load($(this).attr("action"), $(this).serialize(), function() {
		$('#footer').css({position: 'relative'});
		$("#attractions-search-response .results-page-link").click(attractionsSearchPageLink);
	});
	
}
function attractionsSearchPageLink(evt) {
	if (evt) evt.preventDefault();
	$("#attractions-search-response").load($(this).attr("href"), function(data) {
		$("#attractions-search-response").html(data);
		$('#footer').css({position: 'fixed'}).css({position: 'relative'});
		$("#attractions-search-response .results-page-link").click(attractionsSearchPageLink);
	});
}

function print_r(OObj, recurse, prependingSpace) {
	if(typeof OObj == 'object') {
		var treeDisplay = '';
		for(var key in OObj) {
			treeDisplay += prependingSpace+'['+key+'] => \''+OObj[key]+'\' ('+typeof OObj[key]+')\n';
			if(recurse && typeof OObj[key] == 'object') {
				treeDisplay += print_r(OObj[key], recurse, prependingSpace+'\t');
			}
		}
		return treeDisplay;
	} else {
		return 'not an object!';
	}
}

function addOption(select, optText, optValue) {
	var newOpt = document.createElement("option");
	newOpt.value = optValue;
	newOpt.text = optText;
	try {
	    select.add(newOpt, null); // standards compliant; doesn't work in IE
	  }
	  catch(ex) {
	    select.add(newOpt); // IE only
	  }
	
}
