$(document).ready(
	function()
	{
		//set up variables
		var email = $("#email");
		var iconDisplay = $("#iconDisplay");
		
		var processing = $("#processing");
		var badEmail = $("#badEmail");
		
		var okEmailImage = $("#okEmailImage");
		var badEmailImage = $("#badEmailImage");
		
		var submitReset = $("#submitReset");
		
		function validateEmail()
		{
			if (email.val() != email.lastValue)
			{	
				this.timer = setTimeout(function ()
				{
					var problems = 0;
					
					email.lastValue = email.val();
					
					badEmail.hide();
					processing.show();
					okEmailImage.hide();
					badEmailImage.hide();
										
					var emailString = email.val();
					
					if (validateEmailOnClient(emailString))
						validateEmailOnServer(emailString);	
					
					else
					{
						processing.hide();
						badEmail.show();
						okEmailImage.hide();
						badEmailImage.show();
					}
				},
				200);
			}
		}
		
		//validate email addresss
		function validateEmailOnClient()
		{
			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(email.val()))
				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)
					{
						badEmail.hide();
						processing.hide();
						badEmailImage.hide();
						okEmailImage.show();
						
						submitReset.removeAttr("disabled");
					}
					else 
					{
						processing.hide();
						badEmail.show();
						okEmailImage.hide();
						badEmailImage.show();
						
						submitReset.attr("disabled","true");
					}
				},
				error: function () 
				{
					alert("Could Not Validate Email on the Server.");
				}
			});
		}
		
		$('.resetButton').openDOMWindow({ 
			height:220, 
			width:350, 
			positionType:'centered',
			positionTop:50, 
			eventType:'click', 
			positionLeft:50, 
			windowSource:'iframe', 
			windowPadding:2,
			loader:1, 
			loaderImagePath:'/images/ajax-loader.gif', 
			loaderHeight:16, 
			loaderWidth:17,
			windowBGColor:'#DADADA',
			overlayColor:'#EEEEEE',
			overlayOpacity:'35'
		});
		
		//close the popup window when this button is clicked
		$("#cancelReset").click(
				function() {
					self.parent.$("#DOMWindow").closeDOMWindow();
				}
	    );
		
		submitReset.click(
				function() {
					badEmail.hide();
					processing.show();
				}
	    );
		
		
		email.keyup(validateEmail);
		
		submitReset.attr("disabled","true");
		okEmailImage.hide();
		badEmailImage.hide();
	});

function sendMail(email)
{
	var dataString  = 'email=' + Base64.encode(email);
	
	$.ajax(
	{
		url: '/signup/sendmail',
		data: dataString,
		dataType: 'json',
		type: 'post'
	});
}