// Global variables for slideshow.
var slideTime = 5000;
var captionTime = 400;
var fadeTime = 1000;

// Function for getting next slide
function getNextSlide($slides, curSlide, nextSlide) {
	
	if ($slides.find('.caption').length!=0) {
	
		$slides.find('.caption').animate({ "height": 0 }, captionTime, moveSlide($slides, curSlide, nextSlide));
		
	} else {
		
		moveSlide($slides, curSlide, nextSlide);
		
	}


}

function moveSlide($slides, curSlide, nextSlide) {
		
			$slides.eq(curSlide).children('img').css({ "z-index": 0 });
			$slides.eq(nextSlide)
		        .addClass('current')
		        .children('img')
				.css({ "z-index": 1 })
				.fadeIn(fadeTime, function() {
		            $slides.eq(curSlide)
		            		.removeClass('current')
		            		.children('img').css({"display":"none" });
		            		$slides.find('.caption').animate({ "height": 60 }, captionTime);
		        });

}

// HTML form content to insert into DOM
var formContent = '<div id="contact"><div id="message"><h2>Contact Us</h2><p>If you would like to get in touch, please call 0208 340 6041.</p><p>Alternatively you can fill out this form to send us an email. Leave your phone number if you would like us to call you, otherwise please make sure you leave a valid email address so we can get back to you.</p><p>Steve Hooper.</p><p><a href="#" class="close">Close this form</a></p></div><form id="myForm" action="#" method="post"><div><input type="text" name="name" id="name" value="Name..." /><input type="text" name="phone" id="phone" value="Phone..." /></div><div><input type="text" name="email" id="email" value="email@address.com" /></div><div><textarea cols="40" rows="8" name="message" id="message">Message...</textarea></div><div><input type="submit" id="submit" value="Send" /></div></form><a class="close" id="cross" href="#">Close</a></div>';

// Function for showing or hiding the contact form.
function showContactForm(isVisible, $content, $curpageLink) {

	if (!isVisible) {
		
		if ($('div#contact:animated').size() != 0) {
			return false;
		} else {
		
			$content.prepend(formContent);
			
			// Form behaviour
			assignFormFieldActions();
			$('form').submit( function() { return false; });
			$('form').submit( function() { sendMail(); });
			$content.children('div#contact').ajaxSend(function(evt, request, settings){
														waitingForServer($(this));
												});
			$content.children('div#contact').slideDown(500);
			$('div#contact a.close').click( function () {$('a#six').click(); return false; });
			$('a#six').addClass('current');
			$curpageLink.removeClass('current');
			$('a#six span#down-arrow').css({ backgroundPosition : "0 16px" });
			
			return true;
			
		}
		
	} else {
	
		if ($('div#contact:animated').size() != 0) {
			return true;
		} else {
		
			$content.children('div#contact').slideUp(500, function() { $(this).remove(); } );
			$('a#six').removeClass('current');
			$curpageLink.addClass('current');
			$('a#six span#down-arrow').css({ backgroundPosition : "16px 0" });
			
			return false;
		
		}
		
	}

}

function waitingForServer($container) {
	
	$container.prepend('<div id="overlay"><div id="waiting">Waiting...</div></div>');
	$('div#overlay').css({ "opacity":0.8 });

}


function assignFormFieldActions() {
	
	$('input#name').focus(function() { focusField($(this), "Name..."); });
	$('input#email').focus(function() { focusField($(this), "email@address.com"); });
	$('input#phone').focus(function() { focusField($(this), "Phone..."); });
	$('textarea#message').focus(function() { focusField($(this), "Message..."); });
	$('input#name').blur(function() { blurField($(this), "Name..."); });
	$('input#phone').blur(function() { blurField($(this), "Phone..."); });
	$('input#email').blur(function() { blurField($(this), "email@address.com"); });
	$('textarea#message').blur(function() { blurField($(this), "Message..."); });

}


// Deal with response from server
function response(msg, userText) {
	
	var responseTitle = "Hold On...";
	
	if (msg==1) {
		responseTitle= "Thank You";
		userText="Your email has been sent. We'll get back to you as soon as we can."
		onClose = function() { $('a#six').click(); return false; };
	}
	else {
		if(!userText) { userText="Please provide a valid email address, otherwise we can't get back to you."; }
		onClose = function() { $('div#response, div#overlay').fadeOut(500, function() { $(this).remove(); }); return false; };
	}
	$('div#waiting').remove();
	$('div#overlay').after('<div id="response"><h3>'+responseTitle+'</h3><p>'+userText+'</p><p><a href="#" id="back-to-form">Go Back</a></p><div>');
	$('a#back-to-form').click(onClose);
	$('div#response').fadeIn(500);

}

// Send the form to server
function sendMail() {
	
	var name = $('#name').val();
	var phone = $('#phone').val();
	var email = $('#email').val();
	var message = $('textarea#message').val();
	
	if (formValidation(name, phone, email, message)) {
	
		$.ajax({
			   
			   url: "php/contact.php",
			   type: "POST",
			   success: function(msg) { response(msg); },
			   data: "name="+name+"&phone="+phone+"&email="+email+"&message="+message
			   
			   });
	}
		
	return false;
	
}


// Validate form before submission
function formValidation(name, phone, email, message) {
	
	// Assume valid
	var valid = true;
	
	if (message == "" || message == "Message..." || name == "Name..." || email == "email@address.com") {
		valid = false;
	}
	
	// Show error if not valid
	if (!valid) {
		$('div#contact').prepend('<div id="overlay"><div id="waiting">Waiting...</div></div>');
		$('div#overlay').css({ "opacity":0.8 });
		response(0,"Please make sure you have filled out all of the form fields. (Phone number is optional).");
	}
	
	return valid;
	
}

// Form fields auto hiding of default text values
// and repopulating if left empty.
function focusField($field, defText) {
	
	$field.addClass('active');
	
	if ($field.val()==defText) {
		$field.val("");
	}
	
}

function blurField($field, defText) {

	if ($field.val()=="") {
		$field.val(defText)
		$field.removeClass('active');
	} 

}



$(document).ready(function(){

    // Initialisations for slideshow.
	var curSlide = 0;
	var nextSlide = 1;
	
	var $slides = $('#slider').children(); // Cache slider div
	var numOfSlides = $slides.length; // Get number of slides
	
	// Set slide images to dispay none, except current image.
	$slides.find('img').css({"display": "none" })
						.eq(curSlide).css({"display": "block"});
	
	// Call call slideshow at set interval
	setInterval(function() {
		
		getNextSlide($slides, curSlide, nextSlide);
		
		curSlide++;
		nextSlide++;
		
		if (nextSlide==numOfSlides) {
			nextSlide=0;
		} else if (curSlide==numOfSlides) {
			curSlide=0;
		}
	
	}, slideTime);
	
	
	// Initialisations for contact form
	var contactFormVisible=false;
	var mainContent = $('div#main-content');
	var $curpageLink = $('#nav-links li a.current');
	
	// Bind click event to contact link
	$("a#six").click( function() {
		contactFormVisible = showContactForm(contactFormVisible, mainContent, $curpageLink);
		return false;
	});

});
