Event.observe(window,'load', function() { 
	$$('.c_form').each(function(form) { 
		form.observe('submit', function(e) { 
			e.stop(); 
			observeForm(form);
		});
	}); 
});
function observeForm(form) {
	form.select('.form_action_message', '.form_error_message').invoke('remove');
	var submit = true;
	// TEXT INPUTS
	form.select('.form_required').each(function(elem) {
	    if($(elem).hasClassName('numeric_form_input')) {
        	if(!parseInt($F(elem).strip())) {
        		submit = false;
        		addActionMessage(elem, 'A number is required.')
        	}
	    }
	    
	    else if($(elem).hasClassName('form_email')) {
        	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        	if (!emailPattern.test($F(elem).strip())) {
        		submit = false;
        		addActionMessage(elem, 'Please enter a valid email address');
        	}
        }
        
        else if($F(elem).strip() == '' || $F(elem) == '_x_') {
        	submit = false;
        	addActionMessage(elem, 'Required');
        }
	});
	
	// RADIO INPUTS
	form.select('.radio_required').each(function(elem) {
		var id = 'field_' + elem.id.substring(6);
		if(!form.getInputs('radio', id).find(function(radio) { return radio.checked; })) {
			addActionMessage(elem, 'Required');
			submit = false;
		}
	});
	
	// CHECKBOXES
	form.select('.checkbox_required').each(function(elem) {
		var cls = '.checkbox_' + elem.id.substring(9);
		var checkok = false;
		$$(cls).each(function(el) { if(el.checked) checkok = true; });
		if(!checkok) {
			addActionMessage(elem, 'Please select at least one item.');
			submit = false;
		}
	});
	
	if(submit) {
		form.submit();
	} else {
		var html = '<div class="form_error_message">Please fill in the *Required fields below</div>';
		form.insert({top:html});
		new Effect.Pulsate(form.select('.form_error_message')[0], { pulses: 3 });
		form.scrollTo();
	}
}

function addActionMessage(field, message) {
	var html = '<div class="form_action_message">' + message + '</div>';
	var container = field.up('.form_field');
	container.select('.form_action_message').invoke('remove');
	container.insert({bottom:html});
}