
// Slider functions
function sliderInit(slider){
	var numSlides = slider.find("ol.slides li").length;
	// Create pagination
	var pagination = $("<ol class='pagination'></ol>");
	for(var i=1;i<=numSlides;i++){
		pagination.append("<li><a href='#"+i+"'>"+i+"</a></li>"); // Display them none at first.
	}
	pagination.children("li").first().addClass("current");
	slider.append(pagination);
	slider.find("ol.slides li").not(':eq(0)').hide();
}

function sliderRun(slider,target){
	var current = slider.find("ol.pagination li.current").index();
	var currentSlide = slider.find("ol.slides li:eq("+current+")");
	if(target == undefined){
		if(currentSlide.next("li").length > 0){
			target = currentSlide.next("li").index();
		}else{
			target = 0;
		}
	}
	var newSlide = slider.find("ol.slides li:eq("+target+")");
	currentSlide.fadeOut(1000);
	newSlide.fadeIn(1000);
	slider.find("ol.pagination li.current").removeClass("current");
	slider.find("ol.pagination li:eq("+target+")").addClass("current");
}

// Image preload from http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

$(".slider").each(function(){
	var slider = $(this);
	if(slider.find("ol.slides li").length > 1){
		sliderInit(slider);
		var sliderID = $(".slider").index(slider);
		var runSlide = new Array();
		runSlide[sliderID] = setInterval(function(){
			sliderRun(slider);
		},7500);		
		slider.find("ol.pagination li a").bind("click", function(event){
			event.preventDefault();
			if(!$(this).parent("li").hasClass("current") && slider.find("ol.slides li:animated").length < 1){
				var selected = $(this).parent("li").index();
				clearInterval(runSlide[sliderID]);
				sliderRun(slider,selected);
			}
		});
	}
});

$(document).ready(function(){

	$("label.inline").each(function(){
		var labelText = $(this).text();
		var field = $(this).next("input.text");
		$(this).hide();
		// Set label if nothing entered
		if(field.val() == "" || field.val() == labelText){
			field.val(labelText).addClass("placeholder");
		}
		field.focus(function(){
			// Clear value if label still present
			if(field.val() == labelText){
				field.val("").removeClass("placeholder");
			}
		});
		field.blur(function(){
			// Replace label if nothing entered
			if(field.val() == ""){
				field.val(labelText).addClass("placeholder");
			}
		})
	});
	

	
	// Cheeky navigation hack
	$("#subnav li.current").each(function(){
		if($(this).children("ul").length){
			$(this).addClass("hasSub");
		}
	});
	
	// Product pages (dirty for speed!!)
	if($("img.prod-slider").length){
		var detailsOpen = true;
		var numSlides = $("#imageContainer img.prod-slider").length;
		if(numSlides > 1){
			var current = $("#imageContainer img.prod-slider:last").index("img.prod-slider");
			$("#imageContainer img.prod-slider").hide();
			$("#imageContainer img.prod-slider:last").show();
			var productSlide = setInterval(function(){
				if(current <= 0){
					target = numSlides-1;
				}else{
					target = current-1; //-2 as target is index based and going backwards
				}
				$("#imageContainer img.prod-slider").eq(current).fadeOut(1000);
				$("#imageContainer img.prod-slider").eq(target).fadeIn(1000);
				current = target;
			},3000);
			$("#imageContainer a.navButton").click(function(event){
				event.preventDefault();
				clearInterval(productSlide);
				target = $(this).index("a.navButton");
				if(current != target && !$("#imageContainer img.prod-slider:animated").length){
					$("#imageContainer img.prod-slider").eq(current).fadeOut(1000);
					$("#imageContainer img.prod-slider").eq(target).fadeIn(1000);
					current = target;
				}
			});
		}
		$("img#imgToggler").click(function(){
			var details = $(this).parent("#toggler").next("#productDetails");
			if(detailsOpen){
				var size = details.outerWidth(true);
				$(this).attr('src', "/assets/open.gif");
				details.animate({'right': 0-size},500,function(){
					detailsOpen = false;
				});
			}else{
				$(this).attr('src', "/assets/close.gif");
				details.animate({'right': 0},500,function(){
					detailsOpen = true;
				});
			}
		});
	}
	
	if($("#accordion").length){
		$("#accordion .element").not(":first").hide();	
		$("#accordion .element").first().addClass("open");
		$("#accordion h3.toggler").bind("click", function(){
			if(!$(this).next(".element").hasClass("open")){
				$("#accordion .element.open").slideUp(500).removeClass("open");
				$(this).next(".element").slideDown(500).addClass("open");
			}
		});
	}
	
	/*// PreLoad all the slides which are display none.
	if($('.slides img').length > 2){
		$('.slides img').each(function(){
			//console.log('Preloading: '+$(this).attr('src'));
			jQuery.preLoadImages($(this).attr('src'));
		});
	}
	if($('#imageContainer img').length > 2){
		$('#imageContainer img').each(function(){
			//console.log('Preloading: '+$(this).attr('src'));
			jQuery.preLoadImages($(this).attr('src'));
		});
	}*/

	
});

function checkEmail(email) { 
    var pattern = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var emailVal = $("#" + email).val();
    return pattern.test(emailVal);
}

$('#newsletter').submit(function(e) {
  e.preventDefault();
		
  // Grab form action
  var formAction = this.action;
  
  var id = $("#newsletter").attr('data-id');
  var emailId = id + "-" + id;
  
  // Validate email address with regex
  if (!checkEmail(emailId)) {
	alert("Please enter a valid email address");
	return;
  }
  
  $("form#newsletter input.submit").hide();
  $("form#newsletter input.submit").after("<img src='/img/load.gif' class='loading' alt='Loading..' />");
  
  // Serialize form values to be submitted with POST
  var str = $(this).serialize();
  
  // Add form action to end of serialized data
  // CDATA is used to avoid validation errors
  //<![CDATA[
  var serialized = str + "&action=" + formAction;
  // ]]>
  
  // Submit the form via ajax
  $.ajax({
	url: $("#newsletter").attr('data-proxy'),
	type: "POST",
	data: serialized,
	dataType: 'html',
	success: function(data){
	  // Server-side validation
	  if (data.search(/invalid/i) != -1) {
		alert('The email address you supplied is invalid and needs to be fixed before you can subscribe to this list.');
	  }
	  else
	  {
		//var $confirmation = $('#confirmation');
		//$("#newsletter").slideUp(); // If successfully submitted hides the form
		//$confirmation.slideDown("slow");  // Shows "Thanks for subscribing" div
		//$confirmation.prop('tabIndex', -1);
		//$confirmation.focus(); // For screen reader accessibility
		alert('You have successfully signed up to the newsletter');
		$("form#newsletter img.loading").hide();
		$("form#newsletter input.submit").show();
	  }
	}
  });
});
