

Form.Validate = Class.create();
Form.Validate.prototype = {
	
	initialize: function(element, options) {
		this.options = Object.extend({
			isRequired:		'is required',
			couldNotBeSend:	'The form could not be send'
		}, options || {});
		
		this.element = $(element);	
		
		Event.observe(this.element, 'submit', this.validate.bindAsEventListener(this));
	},
	
	label: function(element) {
		element = element.parentNode.parentNode;
		return element.getElementsByTagName('LABEL')[0].innerHTML;
	},
	
	validate: function(event) {
		var elements = Form.getElements(this.element);
		var errors = [];
		
		for (var i = 0; i < elements.length; i++) {
			if (Element.hasClassName(elements[i], 'required')) {
				
				if (Element.hasClassName(elements[i], 'text') && elements[i].value == '') {
					errors.push("- " + this.label(elements[i]) + ' ' + this.options.isRequired + "\n");
				}

				if (Element.hasClassName(elements[i], 'select') && elements[i].options[elements[i].selectedIndex].value == '') {
					errors.push("- " + this.label(elements[i]) + ' ' + this.options.isRequired + "\n");
				}
			}
		}

		if (errors.length) {
			alert (this.options.couldNotBeSend + ":\n" + errors.join(''));
			Event.stop(event);
		}
	}
};