jQuery(document).ready(function($) {
	
	var isValidForm = true;

	
	
	// -------------------------------------------------------------------- FUNCTIONS

	function validateRequired() 
		{
			$('#fm_name, #fm_email, #fm_message').each(function() {
				$('.error').hide();
				// $(this).parent().css('background-image', 'url(images/form-bg.png)');
				$(this).parent().addClass('form-normalbackground');
				
				switch ($(this).attr('name')) {
					case 'fm_name':
						$(this).parent().removeClass('form-errorbackground-name');
						break;
					case 'fm_email':
						$(this).parent().removeClass('form-errorbackground-email');
						break;
					case 'fm_message':
						$(this).parent().removeClass('form-errorbackground-message');
						break;
					
					// the following cases are for the blog discussion form	
					case 'author':
						$(this).parent().removeClass('form-errorbackground-name');
						break;
					case 'email':
						$(this).parent().removeClass('form-errorbackground-email');
						break;
					case 'comment':
						$(this).parent().removeClass('form-errorbackground-message');
						break;
				}
				
				var field = $(this);
				if ( (field.val() === field.attr('title')) || (field.val() === '') ) {
					isValidForm = false;
					
					$('form div div p').hide();
					$(this).next().slideDown(250, function() {
						$('form div div p').fadeIn(250);
					});
					// $(this).parent().css('background-image', 'url(images/form-error-bg.png)');
					
					switch ($(this).attr('name')) {
						case 'fm_name':
							$(this).parent().addClass('form-errorbackground-name');
							break;
						case 'fm_email':
							$(this).parent().addClass('form-errorbackground-email');
							break;
						case 'fm_message':
							$(this).parent().addClass('form-errorbackground-message');
							break;
							
						// the following cases are for the blog discussion form
						case 'author':
							$(this).parent().addClass('form-errorbackground-name');
							break;
						case 'email':
							$(this).parent().addClass('form-errorbackground-email');
							break;
						case 'comment':
							$(this).parent().addClass('form-errorbackground-message');
							break;
					}
					
					// $(this).parent().addClass('form-errorbackground');
					$(this).parent().removeClass('form-normalbackground');					
				}
			});
		}

	function validateEmail()
		{
			emailMatch = /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$/i;
			
			if ( $('#fm_email').val().match(emailMatch) === null ) {
				isValidForm = false;
				
				$('.validEmail p').hide();
				$('.validEmail').slideDown(250, function() {
					$('.validEmail p').fadeIn(250);
				});
				// $('.validEmail').parent().css('background-image', 'url(images/form-error-bg.png)');
				$('.validEmail').parent().addClass('form-errorbackground-email');
				$('.validEmail').parent().removeClass('form-normalbackground');
				
			}
			
		}

	function stripFormInput()
		{
			if ($('#fm_message').val().substr(0, 7) === 'COMMENT') {
				var message = $('#fm_message').val();
				$('#fm_message').val(message.substr(7));
			}

			if ($('#fm_name').val().substr(0, 4) === 'NAME') {
				var name = $('#fm_name').val();
				$('#fm_name').val(name.substr(4));
			}
			
			if ($('#fm_telephone').val().substr(0, 7) === 'WEBSITE') {
				var telephone = $('#fm_telephone').val();
				$('#fm_telephone').val(telephone.substr(7));
			}
		}
	
		
		
	// -------------------------------------------------------------------- CODE
		
	$('.error').hide();		
		
	$('#fm_name').val($('#fm_name').attr('title'));
	$('#fm_email').val($('#fm_email').attr('title'));
	$('#fm_telephone').val($('#fm_telephone').attr('title'));
	$('#fm_message').val($('#fm_message').attr('title'));




	// -------------------------------------------------------------------- EVENT HANDLERS

	$('#fm_name, #fm_email, #fm_telephone, #fm_message').focus(function() {
		var field = $(this);
		if (field.val() == field.attr('defaultValue')) {
			field.select();
		}
	});

	$('#fm_name, #fm_email, #fm_telephone, #fm_message').blur(function() {
		var field = $(this);
		if (field.val() === '') {
			field.val(field.attr('title'));
		}
	});
	
	$('#form_submitted').click(function(event) {
				
		validateRequired();
		validateEmail();
		
		if (isValidForm) {
			$('.errorlist').slideUp(250);
			var subButton = $('form').find(':submit');
			$('form').submit(function() {
				subButton.val('SENDING ENQUIRY...');				
			});
		} else {
			isValidForm = true;
			event.preventDefault();			
			return false;
		}
	});
	
	// version of #form-submitted for blog discussion form
	$('#form_submitted-blog').click(function(event) {
		
		// to handle case when jenny or christopher are logged in and only 
		// have to fill out comment textarea (#fm_message)
		if ( ($('#fm_message').val() === $('#fm_message').attr('title')) || ($('#fm_message').val() === '') ) {
			event.preventDefault();			
		}
		
		validateRequired();
		validateEmail();

		if (isValidForm) {
			stripFormInput();
			$('.errorlist').slideUp(250);
			var subButton = $('form').find(':submit');
			$('form').submit(function() {
				subButton.val('POSTING COMMENT...');				
			});
		} else {
			isValidForm = true;
			event.preventDefault();			
			return false;
		}
	});
	
	$(':checkbox').click(function() {
		var checked = this.checked;
		if (checked) {
			$('#fm_upload').slideDown(250);
		} else {
			$('#fm_upload').slideUp(250, function() {
				$(this).val('');
			});
		}
	});
	

});