if(typeof String.prototype.trim !== 'function') {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/, ''); 
	}
}

$(document).ready(function() {
	var defaultEmptyText = $('#email').val();
	
	// Store default empty text
	$('#email').data('default_text', $('#email').val());
	
	// Set default empty text when field is empty
	$('#email').focus(function(event) {
		if(!$(this).val().trim().length || $(this).val() == $(this).data('default_text')) {
			$(this).val('');
			$(this).removeClass('empty');
		}
	}).blur(function(event) {
		$(this).val($(this).val().trim());
		if(!$(this).val().length) {
			$(this).addClass('empty');
			$(this).val($(this).data('default_text'));
		}
	});
	
	$('#form_signup').submit(function(event) {
		event.preventDefault();
		
		var oForm = $('#form_signup');
		var oEmail = $('#email');
		var oSubmit = $('#submit');
		
		// Disable submit button
		oSubmit.attr('disabled', 'disabled');
		
		// Validate email
		if(oEmail.val().length == 0 || oEmail.val() == oEmail.data('default_text')) {
			alert('Please enter your email address.');
			oSubmit.removeAttr('disabled');
			return false;
		} else if(!isValidEmailAddress(oEmail.val())) {
			alert('Invalid email address.');
			oSubmit.removeAttr('disabled');
			return false;
		}
		
		// Submit email
		$.ajax({
			url: oForm.attr('action'),
			type: 'POST',
			dataType: 'json',
			data: {email: oEmail.val()},
			complete: function() {
				oSubmit.removeAttr('disabled');
			},
			success: function(data) {
				if(data.success) {
					oForm.empty();
					oForm.append($('<p class="success">Thank you for showing your interest!</p>'));
					oEmail.hide();
					oSubmit.hide();
				} else {
					alert(data.error);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				// Error
				dialog(data.errors, 'An error occurred on the server when processing your submit. Please try again later');
			}
		});
	});
});


/**
 * Validate an email address
 * @param emailAddress
 * @return bool
 */
var isValidEmailAddress = function(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
};
