// http://jdbartlett.github.com/innershiv | WTFPL License
window.innerShiv=(function(){var d,r;return function(h,u){if(!d){d=document.createElement('div');r=document.createDocumentFragment();/*@cc_on d.style.display = 'none'@*/}var e=d.cloneNode(true);/*@cc_on document.body.appendChild(e);@*/e.innerHTML=h.replace(/^\s\s*/, '').replace(/\s\s*$/, '');/*@cc_on document.body.removeChild(e);@*/if(u===false){return e.childNodes;}var f=r.cloneNode(true),i=e.childNodes.length;while(i--){f.appendChild(e.firstChild);}return f;}}());
if (window.console === undefined) { window.console = { log: function() {} }; }

	
	$(document).ready(function() {
		$.localScroll({ 
			axis:'y',
			speed: 900,
			hash: true
		});
		
		$("nav#float").css({ display: "none", opacity: 0 });
		$(window).scroll(updateFloatingNav);
		updateFloatingNav();
		
		$(".revolver .trigger").click(triggerRevolver);
		initRevolvers();
		
		$(".models_nav span").click(switchModel);
		
		$(".gallery_thumbnails span").click(switchGalleryImage);
		
		$("#contact form").submit(submitContactForm);
		
		calcHeights();
	});
	
	function calcHeights()
	{
		$(".panel").each(function() {
			//console.log($(this).parent("section").attr("id") + ": " + $(this).outerHeight());
		});
	}
	
	//FLOATING NAV
	function updateFloatingNav()
	{
		var scrollTop = $(window).scrollTop();
		var scrollMargin = 158;
		
		if(scrollTop > scrollMargin && !$("nav#float").hasClass("visible"))
		{
			$("nav#float").addClass("visible").show().stop().animate({ opacity: 1 }, 158);
		}
		else if(scrollTop < scrollMargin && $("nav#float").hasClass("visible"))
		{
			$("nav#float").removeClass("visible").stop().animate({ opacity: 0 }, 158, function() {
				$(this).hide();
			});
		}
	}
	
	//REVOLVERS
	function initRevolvers()
	{
		$(".revolver").each(function() {
			if($(this).find(".barel > .cylinder > .chamber").length <= 1)
			{
				$(this).find(".trigger").addClass("disabled");
			}
		});
	}
	
	function triggerRevolver(e)
	{
		e.preventDefault();
		
		var target = $(this);
		var revolver = target.parents(".revolver");
		var cylinder = revolver.find(".cylinder");
		var index = cylinder.find(".chamber").index(cylinder.find(".chamber.selected"));
		var total = cylinder.find(".chamber").length - 1;
		var width = cylinder.find(".chamber").eq(0).outerWidth();
		var height = cylinder.find(".chamber").eq(0).outerHeight();
		var vertical = revolver.hasClass("vertical");
		
		index += (target.hasClass("next")) ? 1 : -1;
		if(index >= total)
		{
			index = total; 
			revolver.find(".trigger.previous").removeClass("disabled");
			revolver.find(".trigger.next").addClass("disabled");
		}
		else if(index <= 0)
		{
			index = 0;
			revolver.find(".trigger.next").removeClass("disabled");
			revolver.find(".trigger.previous").addClass("disabled");
		}
		else
		{
			revolver.find(".trigger").removeClass("disabled");
		}
		if(revolver.find(".barel > .cylinder > .chamber").length <= 1)
		{
			revolver.find(".trigger").addClass("disabled");
		}
		
		if(cylinder.find(".chamber.selected")[0] != cylinder.find(".chamber").eq(index)[0])
		{
			cylinder.find(".chamber.selected").removeClass("selected");
			cylinder.find(".chamber").eq(index).addClass("selected");
			
			if(vertical)
				cylinder.stop().animate({ top: -(height * index) });
			else
				cylinder.stop().animate({ left: -(width * index) });
		}
	}
	
	//MODELS
	function switchModel(e)
	{
		e.preventDefault();
		
		var target = $(this);
		var nav = target.parents(".models_nav");
		
		var index = nav.find("span").index(target);
		var total = nav.find("span").length - 1;
		
		if(nav.find("span.selected")[0] != nav.find("span").eq(index)[0])
		{
			//PRODUCT NAV
			nav.find("span.selected").removeClass("selected");
			nav.find("span").eq(index).addClass("selected");
		
			nav.find(".title").html(target.html());
			nav.find(".type").html(target.attr("title"));
			
			//PRODUCT DETAILS
			$("#models .product_details .model.selected").removeClass("selected");
			$("#models .product_details .model").eq(index).addClass("selected");
			
			//PRODUCT SHOT
			var cylinder = $("#models .product_shots .cylinder");
			var width = cylinder.find(".chamber").eq(0).outerWidth();
			
			cylinder.find(".chamber.selected").removeClass("selected");
			cylinder.find(".chamber").eq(index).addClass("selected");
			cylinder.stop().animate({ left: -(width * index) });
		}
	}
	
	//GALLERY
	function switchGalleryImage(e)
	{
		e.preventDefault();
		
		var target = $(this);
		var gallery = target.parents("#gallery");
		var barel = target.parents(".barel");
		
		var index = barel.find("span").index(target);
		var total = barel.find("span").length - 1;
		
		if(barel.find("span.selected")[0] != barel.find("span").eq(index)[0])
		{
			//THUMBNAILS
			barel.find("span.selected").removeClass("selected");
			barel.find("span").eq(index).addClass("selected");
			
			//LARGE
			var cylinder = $("#gallery .gallery_large .cylinder");
			var height = cylinder.find(".chamber").eq(0).outerHeight();
			
			cylinder.find(".chamber.selected").removeClass("selected");
			cylinder.find(".chamber").eq(index).addClass("selected");
			cylinder.stop().animate({ top: -(height * index) });
			
			var clone = cylinder.find(".chamber.selected .meta").html();
			gallery.find(".caption").html($(clone).clone());
		}
	}
	
	//CONTACT
	function submitContactForm(e)
	{
		e.preventDefault();
		
		var form = $(this);
		var valid = true;
		
		if(!form.hasClass("submitting"))
		{
			form.find("input[type=text], textarea").each(function() {
				if($.trim($(this).val()) == "")
				{
					drawError($(this));
					valid = false;
				}
				else if($(this).attr("name") == "email" && !validateEmail($(this).val()))
				{
					drawError($(this));
					valid = false;
				}
				else
				{
					removeError($(this));
				}
			});
			
			if(valid)
			{
				form.addClass("submitting").find("input, textarea").not(".submit").css({ opacity: 0.5 }).attr("disabled", "disabled");
				form.find("input.submit").val("Sending");
				
				var data = {
					message: form.find("textarea[name=message]").val(),
					name: form.find("input[name=name]").val(),
					email: form.find("input[name=email]").val(),
					ajax: true
				};
				
				$.ajax({
					url: www_root + "ajax/send-message/",
					type: "GET",
					data: data,
					dataType: "html",
					success: function(data) {
						if(data.indexOf("SENT") > -1)
						{
							form.removeClass("submitting").addClass("sent").find("input.submit").val("Sent!");
						}
						else
						{
							form.removeClass("submitting").find("input, textarea").not(".submit").css({ opacity: 1 }).attr("disabled", "");
							form.find("input.submit").val("Send");
						}
					}
				});
			}
			else
			{
				//console.log("ERRORS");
			}
		}
	}
	
	function validateEmail(email)
	{
		pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
		return pattern.test(email);
	}
	
	function drawError(el)
	{
		el.parents("fieldset").addClass("error");
	}
	
	function removeError(el)
	{
		el.parents("fieldset").removeClass("error");
	}
