$(document).ready(function () {

	var defaultEasing = 'easeInOutQuad',
		animationDuration = 750;


	/* Slideshow
	-------------------------------------------------------------- */
	
	var slideshowContainer = $('#slideshow-container'),
		slides = $('.slides', slideshowContainer),
		slidePager = $('.pager', slideshowContainer),
		slideNav = $('.nav', slideshowContainer);
	
	slides.cycle({
		fx: 'scrollLeft',
		easing: defaultEasing,
		pager: slidePager,
		next: $('a.next', slideNav),
		prev: $('a.prev', slideNav),
		speed: animationDuration
	});
	
	$('a', slideNav).click(function () {
		slides.cycle('pause');
	});
	
	$('a', slidePager).click(function () {
		slides.cycle('pause');
	});
	
	
	/* Sub-features scroll
	-------------------------------------------------------------- */
	
	var subFeaturesContainer = $('#sidebar-container'),
		subFeatures = $('.sub-features', subFeaturesContainer),
		subFeaturePager = $('.pager', subFeaturesContainer),
		subFeatureHeight = subFeatures.children().first().height(),
		distance,
		subFeaturePosition = 0,
		stopHeight = ((subFeatures.find('.sub-feature').size()-1) * subFeatureHeight) - subFeatureHeight;
	
	
	function resetSubFeaturePager() {
	
		if (subFeaturePosition === 0) {
		
			$('a.up', subFeaturePager).stop().fadeOut();
		
		} else {
		
			$('a.up', subFeaturePager).stop().fadeIn();
	
		}
	
		if (subFeaturePosition >= stopHeight) {
		
			$('a.down', subFeaturePager).stop().fadeOut();
		
		} else {
		
			$('a.down', subFeaturePager).stop().fadeIn();
	
		}
	
	}
	
	resetSubFeaturePager();
	
	$('a', subFeaturePager).click(function () {
	
		if ($(this).hasClass('down')) {
	
			distance = '+=' + subFeatureHeight + 'px';
			
			subFeaturePosition += subFeatureHeight;
		
		} else {
		
			distance = '-=' + subFeatureHeight + 'px';
		
			subFeaturePosition -= subFeatureHeight;
		
		}
			
		subFeatures.scrollTo(distance, {
			axis: 'y',
			duration: animationDuration,
			easing: defaultEasing
		});
		
		resetSubFeaturePager();
	
		return false;
	
	});
	
	
	/* Switch between list and calendar view in panel
	-------------------------------------------------------------- */
	
	var upcomingPanel = $('.panel.upcoming-events'),
		upcomingListing = $('ul.listing', upcomingPanel),
		upcomingCalendar = $('.calendar-container', upcomingPanel),
		upcomingSwitch = $('.links', upcomingPanel).first();
	
	$('a', upcomingSwitch).click(function () {
	
		if ($(this).hasClass('calendar')) {
		
			upcomingListing.hide();
			upcomingCalendar.show();
		
		} else {
			
			upcomingListing.show();
			upcomingCalendar.hide();
		
		}
		
		$('a', upcomingSwitch).removeClass('selected');
		
		$(this).addClass('selected');
		
		return false;
	
	});
	
	
	/* Selector menu
	-------------------------------------------------------------- */
	
	var selectorBar = $('#selector-bar'),
		selector = $('ul.selector', selectorBar),
		selectorItems = $('ul.items', selector),
		selectorToggle = $('a.header', selector);
	
	selectorToggle.click(function () {
	
		if (!selectorItems.hasClass('revealed')) {
		
			selectorItems.slideDown().addClass('revealed');
			
			selector.addClass('selected');
		
		} else {
			
			selectorItems.slideUp().removeClass('revealed');
			
			selector.removeClass('selected');
		
		}
		
		return false;
	
	});
	
	
	
		
	$('tr#mc_days th').each(function () {
	
		$(this).html('<span>' + $(this).html() + '</span>');
	
	});
	
	
	/* Open external links in new window
     -------------------------------------------------------------- */
	
	$("a").each(function () {
		if (this.href.indexOf(location.hostname) === -1) { $(this).attr('target', '_blank'); }
	});
	
	
	/* Enable date picker
     -------------------------------------------------------------- */
	
	$("input.datepicker").datepicker({ 
		dateFormat: 'dd/mm/yy',
		minDate: 0,
		beforeShowDay: $.datepicker.noWeekends,
		firstDay: 1
	});
	
	
	/* Validate forms
     -------------------------------------------------------------- */

	$('form.validate').validate({
		errorElement: 'span',
		errorClass: 'error',
		errorPlacement: function(error, element) {
			error.appendTo(element.parent().find('label'));
		}
	});

});
