// input fields
Event.observe(window, 'load', function() {
	var inputfields = $$('.validate'),
		urlValue = 'http://';
	
	function toggleFocus(evt, evtType) {
		var field = Event.element(evt);

		if((field.value === field.initValue && field.value !== urlValue) && evtType === 'focused') {
			Element.removeClassName(field, 'field-empty');
			field.value = (field.id === 'url') ? urlValue : '';
		} else if((field.value === '' || field.value === urlValue) && evtType === 'blurred') {
			Element.addClassName(field, 'field-empty');
			field.value = field.initValue;
		}
	};
	
	for(var i=0, field; field=inputfields[i]; i++) {
		var fieldForm = Element.up(field, 'form');
		
		field.initValue = field.value || '';
		
		Event.observe(field, 'focus', toggleFocus.bindAsEventListener(this, 'focused'));
		Event.observe(field, 'blur', toggleFocus.bindAsEventListener(this, 'blurred'));
		
		if(typeof fieldForm.hasSubmitAction == 'undefined' || fieldForm.hasSubmitAction == false) { 
			Event.observe(fieldForm, 'submit', function(evt) {
				
				var thisForm = Event.element(evt),
					validateFields = Element.descendants(thisForm),
					validFields = true,
					emailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

				for(var j=0, validateField; validateField=validateFields[j]; j++) {
					if(Element.hasClassName(validateField, 'validate')) {
						Element.removeClassName(validateField, 'field-error');

						if(Element.hasClassName(validateField, 'field-empty')) validateField.value = '';
						if(Element.hasClassName(validateField, 'field-required') && validateField.value === '') {
							Element.addClassName(validateField, 'field-error');
							validateField.value = validateField.initValue;
							validFields = false;
							Event.stop(evt);
						}
						if(Element.hasClassName(validateField, 'field-email') && !emailRegExp.test(validateField.value)) {
							Element.addClassName(validateField, 'field-error');
							validateField.value = validateField.initValue;
							validFields = false;
							Event.stop(evt);
						}
					}
				}
				
			}.bindAsEventListener(this));
			
			fieldForm.hasSubmitAction = true;
		}
	}

});