$(document).ready(function() {
	$('form#contact-form-page').submit(function() {
		$('form#contact-form-page .error').remove();
		$('form#contact-form-page').parent().children('p#thank-you').remove();
		var hasError = false;
		$('.required').each(function() 
		{
			if(jQuery.trim($(this).val()) == '') 
			{
				var labelText = $(this).prev('label').text();
				$(this).parent().append('<span class="error">You forgot to enter your '+labelText+'.</span>');
				hasError = true;
			} 
			else if( $(this).hasClass( 'email' ) )
			{
				var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
				if( !emailReg.test( jQuery.trim( $(this).val() ) ) ) 
				{
					var labelText = $(this).prev('label').text();
					$(this).parent().append('<span class="error">You entered an invalid '+labelText+'.</span>');
					hasError = true;
				}
			}
		});
		if(!hasError) 
		{
			// show the dimmer screen
			$('#contact-form-page #submit-screen').addClass('show');
			$('#contact-form-page #submit-screen').fadeIn('normal');

			$('form#contact-form-page input.btn').fadeOut('normal', function() 
			{
				$(this).parent().parent().children("div#submit-screen").append('<img src="/wp-content/uploads/loading.gif" alt="Loading&hellip;" height="31" width="31" class="progress" />');
			});
			
			var formInput = $(this).serialize();
			$.post($(this).attr('action'),formInput, function(data)
			{
				// hide the dimmer screen
				$('#contact-form-page #submit-screen').fadeOut('normal');
				$('form#contact-form-page input.btn').fadeIn('normal');
				
				if( data == "true" )
				{
					$('form#contact-form-page').before('<p id="thank-you" class="notice"><strong>Thanks!</strong> Your message was sent and I should be in touch soon.</p>');
				}
				else
				{
					$('form#contact-form-page').before('<p id="thank-you" class="error">' + data + '</p>');
				}
				
				// clear the fields
				$("form#contact-form-page :input").each(function(){
					if( $(this).attr('value') != "Submit")
					{
					  $(this).val('');
					}
				});
			});
		}
		
		return false;
		
	});
});