$(document).ready
(
	function()
	{
		// Entire form element
		var formElem = $("#form_email_pages");

		// Form input group elements
		var formInputElems = $("#form_email_pages input");
		var formTextElems = $("#form_email_pages input[type=text]");

		// Individual form input elements
		var formEmailElem = $("#form_email");
		var formNumPagesElem = $("#form_num_pages");
		var formSubmitElem = $("#form_submit");
		var formSendingElem = $("#form_sending");

		// Errors element
		var formErrorsElem = $("#form_errors");

		// For each text input, select its entire text contents if said contents are
		// set to the default value, to faciliate easier user replacement.
		formTextElems.focus
		(
			function()
			{
				if ($(this).val() == $(this)[0].defaultValue)
				{
					$(this).val("");
				}
			}
		);
		
		// Handle form submission via ajax.
		formElem.submit
		(
			function()
			{
				var errors = [];
				formErrorsElem.hide();

				var formEmailReg = /\b[\w.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/;
				var formEmailVal = formEmailElem.val();
				if (formEmailVal == "")
				{
					errors.push("Please enter an email address.");
				}
				else if (!formEmailReg.test(formEmailVal))
				{
					errors.push("Please enter a valid email address.");
				}

				var formPagesReg = /[\d]/;
				var formPagesVal = formNumPagesElem.val();
				if (formPagesVal == "")
				{
					errors.push("Please enter the number of pages.");
				}
				else if (!formPagesReg.test(formPagesVal))
				{
					errors.push("Please enter a valid number of pages.");
				}
				
				if (errors.length > 0)
				{
					var errorsHtml = "";
					for (var i = 0; i < errors.length; ++i)
					{
						errorsHtml += "<li>" + errors[i] + "</li>\n";
					}
					formErrorsElem.html(errorsHtml);
					formErrorsElem.show();
				}
				else
				{
					formInputElems.attr("disabled", true);
					formSubmitElem.hide();
					formSendingElem.show();

					$.post
					(
						"form-process.php",
						{ form_email: formEmailVal, form_num_pages: formPagesVal },
						function(data)
						{
							$("#getstarted").slideUp
							(
								"normal",
								function()
								{
									$("#getstarted").replaceWith(data);
								}
							);
						}
					);
				}

				return false;
			}
		);
	}
);
