function validateEmail(email) {
	if( /^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,4})$/.test(email) ) {
		return (true);
	} else {
		return(false);
	}
}

$(document).ready( function() {
    
	// Show the appropriate form to gather additional information
	$("INPUT[name=type]").click( function() {
		
		var id = $(this).val();
		
		$("#additional_information").slideUp('medium', function() {
			$("#additional_information").html( $('#' + id).html() );
			$("#additional_information").slideDown('medium');
		});
		
		$("#error_message").slideUp('medium');
		
    });
	
	// Handle submission
	$("#request_form").submit( function() {
		
		// Start fresh
		var form = $(this);
		var errors = false;
		$(form).find('.error').removeClass('error');
		$("#error_message").hide();
		
		// Handle email fields
		$(form).find('.email').each( function() {
			if( $(this).val() != '' && !validateEmail($(this).val()) ) {
				$(this).addClass('error');
				errors = true;
			}
		});
		
		// Handle required fields
		$(form).find('.required').each( function() {
			if( $(this).val() == '' ) {
				$(this).addClass('error');
				errors = true;
			}
		});
		
		if( !errors ) {
			var params = $(form).serialize();
			$(form).find(':input').attr('disabled', true);
			$(form).find('INPUT[type=submit]').val('Submitting...');
			$("#working_message").fadeIn('fast');
			$.post('src/ajax/submit-ac.ajax.php', params, function(r) {
				$("#working_message").hide();
				switch( r.status ) {
					case 'success':
						$(form).find('INPUT[type=submit]').val('Success!');
						$("#success_message").fadeIn('fast');
					break;
					default:
						$(form).find(':input').attr('disabled', false);
						$(form).find('INPUT[type=submit]').val('Error!');
						alert('An unexpected error occurred\n\nYour request may not have been processed');
					break;
				}
			}, 'json');
		} else {
			$("#error_message").fadeIn('fast');
		}
		
		return false;
		
	});
    
});