$(function() {

/*
=======================================
	Navigation mouse follower
=======================================
*/
	
	var page = $('body');
	var navigation = [];
	
	$('#nav ul li').each(function(event) {
		navigation.push($(this));
	});
			
	var startLoc = navigation[0];
	
	if (page.hasClass("concrete")) {
		startLoc = navigation[1];
	} else if (page.hasClass("mixes")) {
		startLoc = navigation[2];
	} else if (page.hasClass("grab-digger-hire")) {
		startLoc = navigation[3];
	} else if (page.hasClass("areas-we-cover")) {
		startLoc = navigation[4];
	} else if (page.hasClass("contact")) {
		startLoc = navigation[5];
	}
	
	$(startLoc).find('a').addClass("active");
	
	
	$("#nav ul > li")
		.mouseenter(function(event) {
			var item = $(this);
			var itemPos = item.position();
			var itemWidth = item.width();
			if ($(this).text() !== startLoc.text()) {
				$(this).find('a').addClass("active");
			}
			$('.follower').stop().animate({left: itemPos.left + 20, width: itemWidth});
		})
		.mouseout(function(event) {
			if ($(this).text() !== startLoc.text()) {
				$(this).find('a').removeClass("active");
			}
		});
		
		$(window).load(function(event) {
			$('.follower').hide().css({left: $(startLoc).position().left + 20, width: $(startLoc).width()}).fadeIn(250);
		});

/*
=======================================
	Slideshow functionality
=======================================
*/	
	
	var sliderNav = new Array();
	var sliderIndi = new Array();
	var slides = new Array();
	var current = 0;
	
	$("ul[class=slider-indi] li").each(function(event) {
		sliderIndi.push(this);
	});
	
	$("div[class*=slide-]").each(function(event) {
		slides.push(this);
		$(this).hide();
	});
	
	$(slides[current]).show();
	
	$(".slider-nav ul li").each(function(event) {
		sliderNav.push(this);
	}).mouseover(function(event) {
		$(this).addClass("active");
	}).mouseleave(function(event) {
		if ($.inArray(this, sliderNav) !== current) {
			$(this).removeClass("active");
		}
	}).bind("click", function(event) {
		event.preventDefault();
		$(slides[current]).hide();
		$(sliderNav[current]).removeClass("active");
		$(sliderIndi[current]).removeClass("active");
		current = $.inArray(this, sliderNav);
		$(slides[current]).show();
		$(this).addClass("active");
		$(sliderIndi[current]).addClass("active");
	});
	
	$(".slider-control a[rel=next], .slider-control a[rel=prev]").mouseover(function(event) {
		$(this).addClass("active");
	}).mouseleave(function(event) {
		$(this).removeClass("active");
	});
	
	$(".slider-control a[rel=next]").bind("click", function(event) {
		event.preventDefault();
		$(slides[current]).hide();
		$(sliderNav[current]).removeClass("active");
		$(sliderIndi[current]).removeClass("active");
		if ((current + 1) === slides.length) {
			current = 0;
		} else {
			current++;
		}
		$(slides[current]).show();
		$(sliderNav[current]).addClass("active");
		$(sliderIndi[current]).addClass("active");
	});
	
	$(".slider-control a[rel=prev]").bind("click", function(event) {
		event.preventDefault();
		$(slides[current]).hide();
		$(sliderNav[current]).removeClass("active");
		$(sliderIndi[current]).removeClass("active");
		if ((current + 1) === 1) {
			current = 2;
		} else {
			current--;
		}
		$(slides[current]).show();
		$(sliderNav[current]).addClass("active");
		$(sliderIndi[current]).addClass("active");
	});
	
	$(".slider-trigger").bind("click", function(event) {
		event.preventDefault();
		$(slides[current]).hide();
		$(sliderNav[current]).removeClass("active");
		$(sliderIndi[current]).removeClass("active");
		if ((current + 1) === slides.length) {
			current = 0;
		} else {
			current++;
		}
		$(slides[current]).show();
		$(sliderNav[current]).addClass("active");
		$(sliderIndi[current]).addClass("active");
	});
	
	$(sliderNav[current]).addClass("active");
	$(sliderIndi[current]).addClass("active");

/*
=======================================
	Screw Spry. Martin's basic 
	validation!
=======================================
*/

	function validate(elem) {
		if ($.trim(elem.val()) !== "") {
			elem.removeClass("invalid");
			return true;
		} else {
			elem.addClass("invalid");
			return false;
		}
	}
	
	$("form").bind("submit", function(event) {		
		var errors = new Array();		
		$('input, textarea').each(function(event) {
			if (!validate($(this))) {
				errors.push($(this));
			}
		});		
		if (errors.length < 1) {
			return true;
		}		
		return false;		
	});

/*
=======================================
	Specify background element heights
	to prevent overflow
	
	do this last so other jquery which
	may effect dimentions/positioning
	is processed first
=======================================
*/

	$("#special-left, #special-right").height($("#footer").offset().top);
	
});
