$(document).ready( function() {
	//set up variables
	var email = $("#email");
	var submitReset = $("#submitReset");
	
	var invalidEmailMessage = $("#invalid_email_message");
	var unknownEmailMessage = $("#unknown_email_message");
	var goodEmailMessage = $("#good_email_message");
	var processing = $("#processing");
	
	function validateEmail(event)
	{
		if (email.val() != email.lastValue)
		{	
			email.lastValue = email.val();
								
			var emailString = email.val();
			
			if (validateEmailOnClient(emailString))
				validateEmailOnServer(emailString);	
			else
			{	
				goodEmailMessage.hide();
				unknownEmailMessage.hide();
				
				if(invalidEmailMessage.is(":hidden"))
					invalidEmailMessage.fadeIn();
				
				email.addClass('error');
				email.removeClass('success');
			}
		}
		
		else if(event.which == 13)	
			$("#contactForm").submit();
	}
	
	//validate email addresss
	function validateEmailOnClient(emailString)
	{
		var filter = /^(("[\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;
		
		if(!filter.test(emailString))
			return false;
		
		return true;
	}
	
	function validateEmailOnServer(emailString)
	{	
		//	make an ajax call to the server to test our email address
		$.ajax(
		{
			url: '/signup/testemail/',
			data: 'email=' + emailString,
			dataType: 'json',
			type: 'post',
			success: function (j) {
				if (!j.ok)
				{
					unknownEmailMessage.hide();
					invalidEmailMessage.hide();
					
					if(goodEmailMessage.is(":hidden"))
							goodEmailMessage.fadeIn();
					
					email.removeClass('error');
					email.addClass('success');
				}
				else 
				{
					goodEmailMessage.hide();
					invalidEmailMessage.hide();
					
					if(unknownEmailMessage.is(":hidden"))
						unknownEmailMessage.fadeIn();
					
					email.addClass('error');
					email.removeClass('success');
				}
			},
			error: function () {
				alert("Could Not Validate Email on the Server.");
			}
		});
	}
				
	email.keyup(validateEmail);
	
	$("#contactForm").submit(function(event) {
		event.preventDefault();
		
		if(email.hasClass("success"))
		{
			goodEmailMessage.hide();
			processing.show();
			
			var dataString  = 'email=' + Base64.encode(email.val());
			
			$.ajax(
			{
				url: '/signup/sendpasswordresetemail',
				data: dataString,
				dataType: 'json',
				type: 'post',
				success: function(j) {
					if(j.emailStatus)
						location.href = "http://" + $("#serverName").val() + "/contact/success";
					else
						location.href = "http://" + $("#serverName").val() + "/contact/error";
				},
				error: function() { location.href = "http://" + $("#serverName").val() + "/contact/eror"; }
			});
		}
	});
});
