$(document).ready(function(){
	
	// ===========
	// = top nav =
	// ===========
	
	$('#topnav a').click(function(){
		if($(this).attr('href') == '#contact') {
			$(window).scrollTo('#contact', {duration:500});
			return false;
		} else {
			$(this).colorbox({width:800, initialHeight:300, maxHeight:"95%", opacity:0.75, inline:true, href:$(this).attr('href')});
		}
	});
	
	// learn more
	$('#learn-more').colorbox({width:800, initialHeight:300, maxHeight:"95%", opacity:0.75, inline:true, href:'#services'});
	
	
	// ======================
	// = vertical scrollers =
	// ======================
	
	var vertScrollBoxes = ['#box1','#box3'];
	
	for(i=0; i<vertScrollBoxes.length; i++) {
		
		var box = vertScrollBoxes[i];
		var sWidth = 60;
		var sXoffset = 40;
	
		var sDown = $('<div class="scroller vScroller scrollDisabled down"></div>');
		var sUp = $('<div class="scroller vScroller scrollDisabled up"></div>');
		var sY = $(box).height()-5;
		var sX = ($(box).width()/2)-(sWidth/2);
		$(sDown).css({'top':sY+'px', 'left':(sX+sXoffset)+'px'});
		$(sUp).css({'top':sY+'px', 'left':(sX-sXoffset)+'px'});
	
		$(box).append(sDown);
		$(box).append(sUp);
		
		initVScrollers(box);
		
		// init scroll clicks
		$(sDown).click(function() {
			var box = $(this).parents('.box').eq(0);
			// do scrolling
			if($(this).hasClass('scrollEnabled')) {
				var container = $(box).find('.container');
				var containerHeight = $(container).height();
				$(container).scrollTo($(container).scrollTop()+containerHeight, {duration:300, onAfter:function(){initVScrollers(box);}});
			}
		});
		
		$(sUp).click(function() {
			var box = $(this).parents('.box').eq(0);
			// do scrolling
			if($(this).hasClass('scrollEnabled')) {
				var container = $(box).find('.container');
				var containerHeight = $(container).height();
				var targetPos = $(container).scrollTop()-containerHeight;
				if(targetPos < 0) targetPos = 0;
				$(container).scrollTo(targetPos, {duration:300, onAfter:function(){initVScrollers(box);}});
			}
		});
	}
	
	// ==================
	// = horiz scroller =
	// ==================
	
	var box = $('#box2');
	
	var sHeight = 60;
	var sYoffset = 10;

	var sLeft = $('<div class="scroller hScroller scrollDisabled left"></div>');
	var sRight = $('<div class="scroller hScroller scrollDisabled right"></div>');
	var sY = ($(box).height()/2)-(sHeight/2)+sYoffset;
	$(sLeft).css({'top':sY+'px', 'left':'-5px'});
	$(sRight).css({'top':sY+'px', 'left':($(box).width()-5)+'px'});

	$(box).append(sLeft);
	$(box).append(sRight);
	
	initHScrollers(box)
	
	// init scroll clicks
	$(sLeft).click(function() {
		var box = $(this).parents('.box').eq(0);
		// do scrolling
		if($(this).hasClass('scrollEnabled')) {
			var container = $(box).find('.container');
			var containerW = $(container).width();
			var targetPos = $(container).scrollLeft()-containerW;
			$(container).scrollTo({top:0,left:targetPos}, {duration:300, onAfter:function(){initHScrollers(box);}});
		}
	});
	
	$(sRight).click(function() {
		var box = $(this).parents('.box').eq(0);
		// do scrolling
		if($(this).hasClass('scrollEnabled')) {
			var container = $(box).find('.container');
			var containerW = $(container).width();
			var targetPos = $(container).scrollLeft()+containerW;
			$(container).scrollTo({top:0,left:targetPos}, {duration:300, onAfter:function(){initHScrollers(box);}});
		}
	});
	
	
	
	// ================
	// = contact form =
	// ================
	
	$('#contactForm').submit(function() {
		var required = ['name','email','confirm'];
		var errors = [];
		var formData = $(this).serializeArray();

		// console.log(formData);	// DEBUG
		// 
		// for(field in formData) {
		// 	if($.inArray(formData[field]['name'], required)) {
		// 		// required, check value
		// 		if(formData[field]['value'] == "") {
		// 			errors.push(formData[field]['name']);
		// 		}
		// 	}
		// }
		// 
		// console.log(errors);	// DEBUG

		if(errors.length > 0) {
			$('#form-feedback').text("Please complete the required fields.");
			
		} else {
			// send via AJAX
			$.ajax({
				type: "POST",
				url: "contact_form_processor.php",
				data: formData,
				dataType: 'json',
				success: function(response){
					if(response.status == "success") {
						$('#form-feedback').text("Your message was sent. Thank you.");
						$('#contactForm').get(0).reset();
					} else {
						$('#form-feedback').text(response.msg);
					}
				},
				error: function(response){
					$('#form-feedback').text("An error occurred while sending. Please try again.");
				}
			});
			
		}

		// prevent form submit action
		return false;
	});
	
});

function initVScrollers(box) {
	
	var container = $(box).find('.container');
	var content = $(box).find('.content');
	var sDown = $(box).find('.vScroller.down');
	var sUp = $(box).find('.vScroller.up');
	
	if($(content).height() > $(container).height()) {
		
		if($(container).scrollTop() > 0) {
			sUp.removeClass('scrollDisabled');
			sUp.addClass('scrollEnabled');
		} else {
			sUp.removeClass('scrollEnabled');
			sUp.addClass('scrollDisabled');
		}
		
		if($(container).scrollTop()+$(container).height() >= $(content).height()) {
			sDown.removeClass('scrollEnabled');
			sDown.addClass('scrollDisabled');
		} else {
			sDown.removeClass('scrollDisabled');
			sDown.addClass('scrollEnabled');
		}
	}
}

function initHScrollers(box) {
	
	var container = $(box).find('.container');
	var content = $(box).find('.content');
	var sLeft = $(box).find('.hScroller.left');
	var sRight = $(box).find('.hScroller.right');
	
	if($(content).width() > $(container).width()) {
		
		if($(container).scrollLeft() > 0) {
			sLeft.removeClass('scrollDisabled');
			sLeft.addClass('scrollEnabled');
		} else {
			sLeft.removeClass('scrollEnabled');
			sLeft.addClass('scrollDisabled');
		}
		
		if($(container).scrollLeft()+$(container).width() >= $(content).width()) {
			sRight.removeClass('scrollEnabled');
			sRight.addClass('scrollDisabled');
		} else {
			sRight.removeClass('scrollDisabled');
			sRight.addClass('scrollEnabled');
		}
	}
}