
/*

Stuff for forms - validation, ajaxifying.

*/

var validationTests = [
	['email', /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, 'Please enter a valid email address.'],
	['nonblank', /\w+$/, 'This field is required.'],
	['alphaextended', /^[a-zA-Z0-9_\s\-]+$/, 'Letters and numbers only, please. You can use hyphens if you really, really want to.']
]


function validate(oForm){
	
	var valid = true;
	
	var oFields = oForm.select('input', 'select');
	
	oFields.each( function(myField){

		validationTests.each( function(myTest){
			
			var testName = myTest[0];
			var testPattern = myTest[1];
			var testMessage = myTest[2];
			
			if (myField.hasClassName(testName)){

				if ( !testPattern.test(myField.value ) ){
					
					valid = false;
					
					var fieldContainer = myField.up();
					
					if (fieldContainer.select('p.validationMessage').length < 1){
						fieldContainer.insert({bottom: '<p class="validationMessage">'+ testMessage +'</p>'});
						var validationMessageP = fieldContainer.select('p')[0].identify();
					}
					
					new Effect.Morph(myField.id,{style:'background:#FF6600;color:#000000;', duration:0.5});
					$(myField.id).observe('focus', function(evt){
						$(myField.id).value = '';
						new Effect.Morph(myField.id,{style:'background:#FFFFFF;color:#b2b2b2;', duration:0.5});
						if ($(validationMessageP)){$(validationMessageP).remove()}
					});
					
				}
			
			}
						 
		});
		
	});
	
	return valid;
}






function message(){	
	
	if (validate($('fMessage'))){

		$('fMessage').request({
			onSuccess: function(response){
				var sServerResponse = response.responseText;
				if (sServerResponse == "&outcome=success"){
					$('message_content').update('<div align="center"><h4>Thank you</h4><p>Your message has been sent.</p></div>');
				}else{
					$('message_content').update('<div align="center"><h4>Sorry</h4><p>Something seems to have gone wrong. Please <a class="bodylink" href="mailto:info@capsule01.com?Subject=Contact form error" title="info@capsule01.com">drop us an email</a>.</p></div>');
				}
			},
			onFailure: function(response){
				$('message_content').update('<div align="center"><h4>Sorry</h4><p>Something seems to have gone wrong. Please <a class="bodylink" href="mailto:info@capsule01.com?Subject=Contact form error" title="info@capsule01.com">drop us an email</a>.</p></div>');
			}
		});
	}
	
}





function signup(){
	
	if (validate($('fSubscribe'))){
	
		$('fSubscribe').request({
			onSuccess: function(response){
				var sServerResponse = response.responseText;
				if (sServerResponse == "&outcome=success"){
					$('subscribe').update('<p>You have been added to our mailing list. Thank you!</p>');
				}else{
					$('subscribe').update('<p>Sorry, something seems to have gone wrong. Please <a class="bodylink" href="mailto:info@capsule01.com?Subject=Newsletter subscription error" title="info@capsule01.com">drop us an email</a>.</p>');
				}
			},
			onFailure: function(response){
				$('subscribe').update('<p>Sorry, something seems to have gone wrong. Please <a class="bodylink" href="mailto:info@capsule01.com?Subject=Newsletter subscription error" title="info@capsule01.com">drop us an email</a>.</p>');
			}
		});
	
	}
}