/* $Id$ */

$(document).ready(function(){
	
	function checkEmail (field) {
		var reEmail = /^[a-z][\w.-]+@\w[\w.-]+\.[\w.-]*[a-z][a-z]$/i;
		if (!reEmail.test(field.val())) field.addClass('invalid');
		else field.removeClass('invalid');
		return !field.hasClass('invalid');
	}
	
	function checkPhone (field) {
		var rePhone = /^((\+\d{1,3}(-|\.| )?\(?\d\)?(-|\.| )?\d{1,3})|(\(?\d{2,3}\)?))(-|\.| )?(\d{3,4})(-|\.| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/i;
		if (!rePhone.test(field.val())) field.addClass('invalid');
		else field.removeClass('invalid');
		return !field.hasClass('invalid');
	}
	
	// form stuff
	$('#contact input').blur(function(){
		if ($(this).attr('id') == 'company') return;
		if ($(this).val() == '') $(this).addClass('invalid');
		else $(this).removeClass('invalid');
	});
	$('#contact input[name=email]').blur(function(){
		checkEmail($(this));
	});
	$('#contact input[name=phone]').blur(function(){
		checkPhone($(this));
	});
	
	// contact form submission and validation
	$('#contact-submit').click(function(){
		var fn = $('#firstname');
		var ln = $('#lastname');
		var email = $('#email');
		var phone = $('#phone');
		var company = $('#company');
		var msg = $('#message');
		var errors = [];
		
		if (fn.val() == '') {
			errors.push('First name is required');
			fn.addClass('invalid');
		}
		if (ln.val() == '') {
			errors.push('Last name is required');
			ln.addClass('invalid');
		}
		
		if (!checkEmail(email)) errors.push('An invalid e-mail was provided');
		if (!checkPhone(phone)) errors.push('An invalid phone number was provided');
		
		if (errors.length == 0) {
			var dataStr = '';
			dataStr = 'firstname=' + fn.val();
			dataStr += '&lastname=' + ln.val();
			dataStr += '&email=' + email.val();
			dataStr += '&phone=' + phone.val();
			dataStr += '&company=' + company.val();
			dataStr += '&message=' + msg.val();
			
			$.ajax({  
				type: 'POST',  
				url: ROOT_URL + 'includes/scripts/formsubmit.php',  
				data: dataStr,
				dataType: 'html',
				success: function(data, textStatus, XMLHttpRequest) {
					if (data == '') {
						// success
						$('#contact').fadeOut(150, function(){
							$(this).html('<div class="success">Your request was successfully sent. Expect to hear back from us soon!</div>');
							$(this).fadeIn(150);
						});
					}
					else {
						// error returned
						$('#contact > div.errors').html(data).fadeIn(150);
					}
				}  
			});
		}
		else {
			$('#contact > div.errors').html(errors.join('<br/>')).fadeIn(150);
		}
		
		return false;
	});
	
});
