$(function(){
	
	$('#search,#newsletter_signup').hiddenLabel();

	$('div.nav_panel').navPanels();

	$('#sections').sectionsPanel();
	
	$('#gallery').gallerify();
	
	$('#squires_group_tab').groupMenu();

});

$.fn.hiddenLabel = function(){
	return this.each(function(){
		
		var label = $(this).find('label').text();
		var input = $(this).find('.text');
		
		if (input.val().length==0) {
			input.val(label);
			input.focus(function(){
				if (input.val()==label) input.val('');
			});
			input.blur(function(){
				if (input.val().length==0) input.val(label);
			});
		}
		
		$(this).submit(function(){
			if (input.val() == label) return false;
		});
		
	});
}

$.fn.navPanels = function(){
	return this.each(function(){

		var item = $(this).parent();
		var panel = $(this);
		var left = panel.offset().left;
		
		panel.css('visibility','hidden').appendTo('body');
		
		item.mouseover(function(e){
			item.addClass('over');
			panel.css({
				visibility: 'visible',
				left: left
			});
		});
		item.mouseleave(function(e){
			var offset = item.offset();
			if (e.pageX<offset.left || e.pageY<offset.top+item.height()) {
				item.removeClass('over');
				panel.css('left','-9999px')
			}
		});
		panel.mouseleave(function(){
			item.removeClass('over');
			panel.css('left','-9999px')
		});

	});
}

$.fn.sectionsPanel = function(){
	return this.each(function(){
		var SLIDE_TIME = 6500;
		var FADE_SPEED = 1000;
		var content = $('#section_content>li');
		var controls = $('<ul id="section_controls"><li id="section_pause"><a href="#">Pause</a></li></ul>');
		var timer;
		
		var showContent = function(link){
			link.parent().addClass('on').siblings().removeClass('on');
			content.filter(':visible').fadeOut(FADE_SPEED);
			content.eq(link.attr('data-index')).fadeIn(FADE_SPEED);
		};
		
		var advanceContent = function(){
			var current = controls.children('.on');
			var next = current.is(':last-child') ? $('#section_pause').next() : current.next();
			showContent(next.children('a'));
		}
		
		// add controls
		content.each(function(i){
			var item = $('<li><a href="#" data-index="'+i+'">'+(i+1)+'</a></li>');
			item.children('a').click(function(){
				$('#section_pause').addClass('paused');
				clearInterval(timer);
				showContent($(this));
				return false;
			});
			i==0 ? item.addClass('on') : $(this).hide();
			item.appendTo(controls);
		});
		controls.appendTo(this);
		$('#section_pause').children('a').click(function(){
			var link = $(this);
			if (link.parent().is('.paused')) {
				timer = setInterval(advanceContent,SLIDE_TIME);
				link.parent().removeClass('paused');
			} else {
				clearInterval(timer);
				link.parent().addClass('paused');
			}
			return false;
		});
		
		timer = setInterval(advanceContent,SLIDE_TIME);

	});
}


$.fn.gallerify = function(){
	return this.each(function(){
		var SCROLL_SPEED = 5;
		var container = $(this).css('overflow','hidden');
		var slides = $('#slides');
		var ul = $('>ul',slides);
		var scrollAmount;
		var items = $('>li',ul);
		var mainImage = $('#main_image>img');
		
		items.clone().appendTo(ul);
		
		var startSlide = function(e){
			var currentScroll = slides.scrollLeft();

			if (e.data.direction == 'next') {
				slides.animate({scrollLeft: scrollAmount},{duration: (scrollAmount-currentScroll)*SCROLL_SPEED, easing: 'linear', complete:function(){
					slides.scrollLeft(0);
					startSlide({data:{direction:'next'}});
				}});
			} else {
				slides.animate({scrollLeft: 0},{duration: currentScroll*SCROLL_SPEED, easing: 'linear', complete:function(){
					slides.scrollLeft(scrollAmount);
					startSlide({data:{direction:'prev'}});
				}});
			}
		}
		
		var stopSlide = function(){ slides.stop(); }
		
		// initialise slideshow
		slides.css({
			height: items.outerHeight(),
			overflow: 'hidden'
		});
		ul.css({width: items.outerWidth(true) * items.length * 2 +'px'});
		scrollAmount = ul.width()+13;
		
		var prevButton = $('<button id="button_prev"><img src="/img/button_prev.png" alt="Previous" /></button>')
			.bind('mouseover',{direction:'prev'},startSlide)
			.bind('mouseout',stopSlide).appendTo(container);
		var nextButton = $('<button id="button_next"><img src="/img/button_next.png" alt="Next" /></button>')
			.bind('mouseover',{direction:'next'},startSlide)
			.bind('mouseout',stopSlide).appendTo(container);
			
		ul.find('a').click(function(){
			mainImage.attr('src',$(this).attr('href'));
			$(this).parent().siblings().removeClass('on');
			$(this).parent().addClass('on');
			return false;
		}).eq(0).click();

	});
}

$.fn.groupMenu = function(){
	return this.each(function(){
		var menu = $(this).prev().show();
		var menuHeight = menu.height();
		menu.hide().height(0);
		var menuPaddingTop = menu.css('paddingTop');
		var menuPaddingBottom = menu.css('paddingTop');
		var tab = $(this).find('a');
		
		tab.click(function(){
			if (!menu.is(':animated')) {
				if (menu.is(':visible')) {
					menu.animate({
						height: 0,
						paddingTop: 0,
						paddingBottom: 0
					},{
						duration: 800,
						easing: 'easeOutQuint',
						complete: function(){
							menu.hide();
							tab.removeClass('open');
						}
					});
				} else {
					menu.show().animate({
						height: menuHeight,
						paddingTop: menuPaddingTop,
						paddingBottom: menuPaddingBottom
					},{
						duration: 800,
						easing: 'easeOutQuint',
						complete: function(){
							tab.addClass('open');
						}
					});
				}
			}
			return false;
		});
	});
}
