<!--//

	function newsletterSignup() {	
		// Validate email address
		if (!$F('newsletterEmail').match(/^([^@\s]+)@((?:[-a-zA-Z0-9]+\.)+[a-zA-Z]{2,})$/)) {
		    Effect.Fade('newsletterForm', {duration: 0.3});
		    Effect.Appear('newsletterEmailValidationFail', {duration: 0.3, delay: 0.3});
		} else {
		
			var url = "/newsletter/index.html";
			
			new Ajax.Request(url, {
				method: 'POST',
				parameters: { fa: 'ajax_signup', email_address: $F('newsletterEmail')}, 
				onSuccess: function (transport) {
					if (transport.responseText == 'OK') {
						Effect.Fade('newsletterForm', {duration: 0.3}); 
						Effect.Appear('newsletterSuccess', {duration: 0.3, delay:0.3});
					} else {
						Effect.Fade('newsletterForm', {duration: 0.3});
					    Effect.Appear('newsletterFailure', {duration: 0.3, delay:0.3});
					}
				},			
				onFailure: function () {},				
				onException: function (ex) {alert('Error: ' + ex.Message);}
			});
			
		}
	}
	
	function redisplaySignupForm (element_to_hide) {
	    Effect.Fade(element_to_hide, {duration: 0.3});
	    Effect.Appear('newsletterForm', {duration: 0.3, delay:0.3});
	}
	
	// Prefered over document.onload or other object.event type handlers
	// as calling Event.observe(object, event, action) will not clobber
	// previously setup observers
	Event.observe(window, 'load', function() {
		Event.observe('newsletterButton', 'click', newsletterSignup);
		
		// Set observer to call newsletterSignup() when enter is pressed
		// within the newsletterEmail text field.
		Event.observe('newsletterEmail', 'keypress', function (event) {
		    if (event.keyCode == 13) {
		        newsletterSignup();
		    }
		});
	});
//-->
