
/* SITE SCROLLER */

$(document).ready(function(){
	
	/*$("#home").hide();
	$("#news").hide();
	$("#gallery").hide();
	$("#pastshows").hide();
	$("#bio").hide();
	$("#contact").hide();*/
	
	$("#bio").load("/pages/bio.html", "", onPageLoaded);
	
	$("#contact").load("/pages/contact.html", "", onContactLoaded);
	
	onGalleryLoaded();
});

var navLinks;
var sitePageWidth;
var pageIndex = 0;
var pageTotal;
var scrollY;

$(document).ready(function(){

	// set home as the default selected nav item
	$("body").addClass("home");
	
	// check how many pages
	navLinks = $("#nav > li");
	var pageTotal = navLinks.length;
	
	// get width of a page
	sitePageWidth = $("#content").width();
	
	// iterate over the navLinks, store index
	$("#nav > li").each(function (i) {
		
		// store this navLink's index!
		$(this).data("index", i);
	});
	
	// define hover actions
	
	// define click actions
	$("#nav > li").click(function(e){
		
			e.preventDefault();
			
			$("body").removeClass();
			var className = $(this).attr("id").substr(4);
			$("body").addClass(className);
			
			// reset contact form
			resetContactForm();
			// end reset contact form
			
			var myIndex = $(this).data("index");
			pageIndex = myIndex;
			
			$("#body").animate({left: (myIndex * -sitePageWidth) + 'px'}, 1250, "easeInOutSine");
		});
});

/* SITE INIT */

var subpageWidth = 760;

onPageLoaded = function(){

	//$(this).show();
	
	var pageId = $(this).attr("id");
	
	// Determine how many sub-pages
	var subpages = $(".scroller-content > .content-page", this);
	
	// Set the width of the scroller-content div to full width needed?
	$(".scroller-content", this).width(subpageWidth * subpages.length);
	
	// Stash a data object to keep track of current index / total
	$(".scroller-content", this).data("scrollState", {index:0, total:subpages.length});
	var scrollContent = $(".scroller-content", this);
	var page = $("#" + pageId);
	
	// Determine if we need to hide the next/prev buttons based on # of subpages
	if(subpages.length > 1)
	{
		$(".btn-left", this).hide();
	} else {
		$(".btn-left", this).hide();
		$(".btn-right", this).hide();
	}
	
	// Define the click actions
	$(".btn-right", this).click(function(e){
	
		e.preventDefault();
		var i = scrollContent.data("scrollState").index;
		var t = scrollContent.data("scrollState").total;
		
		if(i < t - 1)
		{
			scrollContent.data("scrollState").index++
			scrollContent.animate({left: '-=' + subpageWidth + 'px'}, 750, "easeInOutSine");
			$(".btn-left", page).show();
			if(scrollContent.data("scrollState").index == t - 1) $(".btn-right", page).hide();
		}
		
		
	});
	
	$(".btn-left", this).click(function(e){
	
		e.preventDefault();
		var i = scrollContent.data("scrollState").index;
		var t = scrollContent.data("scrollState").total;
		
		if(i > 0)
		{
			scrollContent.data("scrollState").index--;
			scrollContent.animate({left: '+=' + subpageWidth + 'px'}, 750, "easeInOutSine");
			$(".btn-right", page).show();
			if(scrollContent.data("scrollState").index == 0) $(".btn-left", page).hide();
		}
	});
}

var contactForm = new Object();
	
onContactLoaded = function()
{
	//$(this).show();

	contactForm.name = $("#contact-name");
	contactForm.nameLabel = $("#contact-name-label");
	
	contactForm.email = $("#contact-email");
	contactForm.emailLabel = $("#contact-email-label");
	
	contactForm.nicethings = $("#contact-nicethings");
	contactForm.nicethingsLabel = $("#contact-nicethings-label");
	
	contactForm.name.blur(validateName);
	contactForm.email.blur(validateEmail);
	contactForm.nicethings.blur(validateNiceThings);
	contactForm.name.keyup(validateName);
	contactForm.email.keyup(validateEmail);
	contactForm.nicethings.keyup(validateNiceThings);

	$("#btn-submit").click(function(e){
		
		e.preventDefault();
		contactSubmit();
	});
}

resetContactForm = function()
{
	$("#contact-form-result").hide("fast");
	$("#contact-form").show("normal");
	$("#contact > form").get(0).reset();
	$("#btn-submit").show("normal");
	
	contactForm.name.removeClass("error");
	$("span", contactForm.nameLabel).removeClass("error");
	
	contactForm.email.removeClass("error");
	$("span", contactForm.emailLabel).removeClass("error");
		
	contactForm.nicethings.removeClass("error");
	$("span", contactForm.nicethingsLabel).removeClass("error");
}

contactSubmit = function()
{
	if(validateName() & validateEmail() & validateNiceThings())
	{
		$("#contact-form").hide("fast");
		$("#btn-submit").hide("fast");
		
		$("#contact-form-result").html("<h3>TRANSMITTING...</h3>");
		$("#contact-form-result").show("normal");
		
		$.ajax({
			type: "POST", 
			url: "/contact-sendmail.php", 
			data: {name:contactForm.name.val(), email:contactForm.email.val(), nicethings:contactForm.nicethings.val()}, 
			dataType: "xml", 
			success: onContactSubmitSuccess, 
			error: onContactSubmitError
		});
	}
}

validateName = function()
{
	var name = contactForm.name;
	var nameLabel = contactForm.nameLabel;
	
	if(name.val().length == 0)
	{
		// INVALID
		name.addClass("error");
		$("span", nameLabel).addClass("error");
		return false;
	} 
	else 
	{
		// VALID
		name.removeClass("error");
		$("span", nameLabel).removeClass("error");
		return true;
	}
}

validateEmail = function()
{
	var email = contactForm.email;
	var emailLabel = contactForm.emailLabel;
	if(email.val().length == 0)
	{
		// INVALID
		email.addClass("error");
		$("span", emailLabel).addClass("error");
		return false;
	} 
	else 
	{
		// VALID
		email.removeClass("error");
		$("span", emailLabel).removeClass("error");
		return true;
	}
}

validateNiceThings = function()
{
	var nicethings = contactForm.nicethings;
	var nicethingsLabel = contactForm.nicethingsLabel;
	
	if(nicethings.val().length == 0)
	{
		// INVALID
		nicethings.addClass("error");
		$("span", nicethingsLabel).addClass("error");
		return false;
	} 
	else 
	{
		// VALID
		nicethings.removeClass("error");
		$("span", nicethingsLabel).removeClass("error");
		return true;
	}
}

onContactSubmitSuccess = function(data, textStatus)
{
	$("#contact-form-result").html("<h3>THANKS!</h3>");
}

onContactSubmitError = function(XMLHttpRequest, textStatus, errorThrown)
{
	$("#contact-form-result").html("<h3>HMM, SOMETHING BROKE...  TRY AGAIN LATER?</h3>");
}

function getWindowScroll() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

