// Global Namespace
var IMPACT = window.IMPACT || {};

// Project Subnamespace
IMPACT = IMPACT || {};

// Local namespace
IMPACT.Site = {};

(function () {
	
	var $space = IMPACT,
		$self = this;

	$self.utils = {
		init: function(obj) {
			
			$(document).ready(function() {

				addSearchListeners();
				addSubscribeListeners();
				
				if ($('#slidedeck').length != 0) { 
					setUpSlideDeck();
				}
				
				if ($('#news-views ol').length != 0) {
					$('#news-views ol').carouFredSel({
						direction		: 'down',
						visibleItems:	3,
						scroll : {
							items		: 3,
							effect		: 'linear',
							speed		: 2500,							
							pauseOnHover: true
						}					
					});
				}
				
				if ($('#contact').length != 0) {
					$('#contact').validate();
				}
				
				if ($('#upload-cv').length != 0) {
					$('#upload-cv').validate({
						rules: {
							cv: {
								required: true,
								accept: "txt|rf|odf|html|pdf|doc|docx|ppt?"	
							}
						}
					});	
				}

				if ($('#subscribe').length != 0) {
					$('#subscribe').validate();
				}
				
				if ($('#hank').length != 0) {
					setTimeout(hank,30*1000);
				}

			});
			
		}
	};
	
	var hank = function() {
		$('#hank').animate({backgroundPosition: '0 0'})
	};
	
	var setUpSlideDeck = function() {
		
		var container = $('#slidedeck');
		
		var slidedeck = container.find('.slidedeck').slidedeck({
			activeCorner: false,
			autoPlay: true,
			autoPlayInterval: 5000,
			cycle: true
		});
		
		var updateActive = function(activeSlide){
			slidedeckNavigation.removeClass('selected');
			$(slidedeckNavigation[activeSlide - 2]).addClass('selected'); // nav is offset by 1
		};
		
		var autoInterval;

		var oldNext = slidedeck.next;
		slidedeck.next = function(params){
			var nextSlide = Math.min(slidedeck.slides.length,(slidedeck.current + 1));
			if(slidedeck.options.cycle === true){
				if(slidedeck.current + 1 > slidedeck.slides.length){
					nextSlide = 1;
				}
			}
			oldNext(params);
			updateActive(nextSlide);
		};
		
		var oldPrev = slidedeck.prev;
		slidedeck.prev = function(params){
			var prevSlide = Math.max(1,(slidedeck.current - 1));
			if(slidedeck.options.cycle === true){
				if(slidedeck.current - 1 < 1){
					prevSlide = slidedeck.slides.length;
				}
			}
			
			oldPrev(params);
			updateActive(prevSlide);
		};

		var oldGoTo = slidedeck.goTo;
		slidedeck.goTo = function(ind, params){
			oldGoTo(ind, params);
			updateActive(Math.min(slidedeck.slides.length,Math.max(1,ind)));
		};
		
		var slidedeckNavigation = container.find('#slidedeck-navigation a');
		
		slidedeckNavigation.bind('click', function(event){
			
			event.preventDefault();

			var action = this.href.split('#')[1];
			
			slidedeck.pauseAutoPlay = true;
			
			switch(action){
				case "previous":
					slidedeck.prev();
				break;
				case "next":
					slidedeck.next();
				break;
				default:
					slidedeck.goTo(action);
				break;
				
			}
			
			if (autoInterval != null) {
				clearTimeout(autoInterval);
			}			
			
			autoInterval = setTimeout(function() {
				slidedeck.pauseAutoPlay = false;
				clearTimeout(autoInterval);
			}, 2500);
						
		});
		
	};
	
	
	
	var addSearchListeners = function() {
		
		$('#search #query').focus(function() {
			$(this).css({'background-position':'-280px -28px'});			
			$('#search label').css({'left':'-9999px'});
		});
		$('#search #query').blur(function() {
			$(this).css({'background-position':'-280px 0'});
			if ($(this).val() == '')
				$('#search label').css({'left':'0'});
		});
		
	};
	
	var addSubscribeListeners = function() {
		
		var labels = $('#subscribe label');
		var inputs = $('#subscribe input');
		
		$(inputs).each(function(index, element) {
			$(element).focus(function() {
				$(this).css({'background-position':'0 -314px'});			
				$(labels[index]).css({'left':'-9999px'});
			});
			$(element).blur(function() {
				$(this).css({'background-position':'0 -290px'});
				if ($(this).val() == '')
					$(labels[index]).css({'left':'0'});
			});
		});

	};
	
	$self.utils.init($self);
	
}).call(IMPACT.Site);
