$(function(){

	var contact_page = new (function()
	{
		// Cache form
		var form = $('.contact_page form');
		var fields = {
			name: form.find('[name=name]'),
			email: form.find('[name=email]'),
			phone: form.find('[name=phone]'),
			service: form.find('[name=service]'),
			budget: form.find('[name=budget]'),
			comments: form.find('[name=comments]')
		};

		form.bind('submit', submit);

		function submit()
		{
			if(validate())
			{
				send_request();
			}

			return false;
		}

		function validate()
		{
			// Setup error handling
			var errors = false;
			form.find('.error').remove();

			// Validate name
			if($.trim(fields.name.val()) == '')
			{
				fields.name.after('<div class="error">&lt; Required</div>');
				errors = true;
			}

			// Validate email
			if(!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test($.trim(fields.email.val())))
			{
				fields.email.after('<div class="error">&lt; Required</div>');
				errors = true;
			}

//Decided against making these mandatory

			// Validate phone
//			if($.trim(fields.phone.val()) == '')
//			{
//				fields.phone.after('<div class="error">&lt; Required</div>');
//				errors = true;
//			}
//
			// Validate comments
//			if($.trim(fields.comments.val()) == '')
//			{
//				fields.comments.after('<div class="error">&lt; Required</div>');
//				errors = true;
//			}
//
			// Validate service
//			if($.trim(fields.service.val()) == '')
//			{
//				fields.service.after('<div class="error">&lt; Required</div>');
//				errors = true;
//			}
//
			// Validate budget
//			if($.trim(fields.budget.val()) == '')
//			{
//				fields.budget.after('<div class="error">&lt; Required</div>');
//				errors = true;
//			}

			return !errors;
		}

		function send_request()
		{
			$.ajax({
				type: 'post',
				url: '/contact-form-submit/',
				data: form.serialize(),
				error: function()
				{
					alert('Unable to send request.');
				},
				success: function(){
					alert('Form submitted successfully, thank-you!');
				}
			});
		}

	})();

	$('a[rel=fancybox]').fancybox();


});

