/*
 # cc : content controller - functionality for slideshow etc
 */
 
 
$(function(){

	// config variables
	var config = {
		slideshowNav : true,
		slideshowDisplay : 8000,
		slideshowTransitionSpeed : 2600,
		captionDelay : 10,
		captionTransitionSpeed : 1500
	};
	
	// content controller
	var cc = {
		
		init : function() {
			cc.initSlideshow();
			cc.availabilityChecker();
			Cufon.replace('#navPrimary li', {hover: true, fontFamily: 'Plantin Std'});
		},
	
		// slideshow setup with navigation
		initSlideshow : function() {
			
			// Show slideshow and activate first one
			$("ul#slideshowImages li:first").addClass("active");
			//$("ul#slideshowImages li:first img").css("display", "block");
			$("ul#slideshowImages li:first img").fadeIn(config.slideshowTransitionSpeed);
			$("ul#slideshowNav li:first").addClass("active");
			
			// Set initial z-indexes and display images (initially hidden by css to stop flash of last slideshow image in list)
			var $slideshowRef = $("ul#slideshowImages li");
			var $slideshowImgRef = $("ul#slideshowImages li img");
			var slideshowIndex = 100;
			$slideshowRef.each(function() {
				$(this).css("z-index", slideshowIndex);
				slideshowIndex -=1;
			});
			
			function displayImages() {
				$slideshowImgRef.each(function() {
					$(this).css("display", "block");
				});
				clearInterval(initDisplayImages);
			};
			
			// init slideshow if more than one image
			if($("ul#slideshowImages li img").length >1) {
				
				// Initialise slideshow
				var initDisplayImages = setTimeout(displayImages, config.slideshowTransitionSpeed+config.slideshowTransitionSpeed);

				// Interval timer for loop, cleared when user selects link from slideshow nav
				var slideshowLoop = setInterval(showNextSlideshow, config.slideshowDisplay);

				if(config.slideshowNav) {
					// Timeout to slide in numbers
					setTimeout(showSlideshowNav, 300);
				
					// Activate links
					$("ul#slideshowNav li").click(function() {
						clearInterval(slideshowLoop);
						if ($("ul#slideshowImages li.active").length) showSlideshow(this);
					});
				};
				
			} else {
					$("ul#slideshowImages li h3").delay(config.captionDelay).animate({"left" : "20px"}, config.captionTransitionSpeed);
			};
			
			function showSlideshowNav() {
				// show first caption before nav
				$("ul#slideshowImages li:first h3").delay(config.slideshowTransitionSpeed).animate({"left" : "20px"}, config.captionTransitionSpeed);
				var $slideshowRef = $("ul#slideshowNav");
				$slideshowRef
					.delay(config.slideshowTransitionSpeed)
					//.css({left: -$slideshowRef.width()})
					.show();
					//.animate({ left: "20px"}, config.captionTransitionSpeed);
			};
			
			function showNextSlideshow() {
				if ($("#slideshowNav .active").next().length) {
					showSlideshow($("ul#slideshowNav li.active").next());
				}
				else {
					showSlideshow($("ul#slideshowNav li:first").get());
				}
			};
			
			function showSlideshow(linkRef) {
				// slideshow link is already active
				if ($(linkRef).hasClass("active")) return false;

				// Stop current animation
				$("ul#slideshowImages").stop();

				// Set link to active etc
				$("ul#slideshowNav li").removeClass("active");
				$(linkRef).addClass("active");
				var slideshowNumber = $(linkRef).prevAll().length;
				var $slideshowNew = $("ul#slideshowImages li").eq(slideshowNumber);
				$slideshowNew.css("z-index", "99");

				// Animate
				$("ul#slideshowImages li.active").removeClass("active").fadeOut(config.slideshowTransitionSpeed, function() {
					$(this).css("z-index", "90").show();
					$refH3 = $(this).find('h3');
					$refH3.css("left", -$refH3.width());
					$slideshowNew.css("z-index", "100").addClass("active");
					$slideshowNew.find('h3').delay(config.captionDelay).animate({"left" : "20px"}, config.captionTransitionSpeed);
				});
			};
			
		},
		
		availabilityChecker : function() {
			var speed = 800;
			var bookNow = $('a#book-now');
			var avail = $('#availability');
			var orgHeight = avail.height();
			var newHeight = $('div.tabs').height()+15;
			var availabilityInit = false;
			

			
			bookNow.toggle(
				function() {
					newHeight = $('div.tabs').height()+15;
					avail.animate({
							height: newHeight
					}, speed, 
					function() {
						
						$('div .tabs').animate({ 
								opacity: 1
						}, 600);
						
						$('.tabs').fadeIn('slow', function() {
							// Animation complete
						});

						
					});
				},
				function() {
					avail.stop();
					$('.tabs').fadeOut('slow', function() {
						// Animation complete
						avail.animate({
								height: orgHeight+"px"
						}, speed);
					});
				}
			);
			
			var tabContainers = $('div.tabs > div');
			tabContainers.hide().filter(':first').show();
			
			$('div.tabs ul.tabNavigation a').click(function () {
					tabContainers.hide();
					tabContainers.filter(this.hash).fadeIn(800);
					newHeight = 15+$('div.tabs').height();
					if (availabilityInit) {
						avail.animate({height:newHeight}, 400);
					}
					availabilityInit = true;
					$('div.tabs ul.tabNavigation a').removeClass('selected');
					$(this).addClass('selected');
					return false;
			}).filter(':first').click();
			
			$('#Arrive').datePicker({clickInput:true}).val(new Date().asString()).trigger('change');
			$('#choose_date').datePicker({clickInput:true}).val(new Date().asString()).trigger('change');
			
			$('#restdiaryform').bind('submit',function() {				   
				var arrDt = $('#choose_date').val().split('/')
				$('#select_date').val(arrDt[2] + arrDt[1] + arrDt[0]);
				return true;
			});
		}	
		
	}; // end slideshow controller
	
	cc.init();
		
});
