// AjaxForm.js
var AjaxForm = new Class({
	initialize: function(el) {
		this.valid = true;
		this.el = $(el);
		this.formcontrols = new AjaxControls($E('div',this.el));
	},
	sendform: function() {
		this.formcontrols.disableArea();
		this.formcontrols.loadProgressBox('Sending email...', 0, -10);
		function fn(resp) {
			this.formcontrols.removeProgressBox();
			this.formcontrols.loadAlertBox(resp);
		}
		var bindfn = fn.bind(this);
		this.el.send({
			onComplete: function(resp) {
				bindfn(resp);
			}
		});
		this.el.reset();
	},
	setValidatorGroup: function(validatorgroup) {
		this.vgroup = $(validatorgroup);
		if ($defined(this.vgroup)) this.vgroup.empty();
	},
	addRequiredFieldValidator: function(el, message) {
		el = $(el);
		if ($defined(el)) {
			if (el.getProperty('value') == "") {
				if ($defined(this.vgroup)) {
					new Element('div').setHTML(message).injectInside(this.vgroup);
				}
				this.valid = false;
			}
		}
	},
	addRegExFieldValidator: function(el, regextype, message) {
		el = $(el);
		//Builtin RegEx
		var regex;
		switch (regextype) {
			case "email":
				regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
				break;
			default:
				regex = regextype;
				break;
		}
		if ($defined(el)) {
			if (!el.getProperty('value').match(regex)) {
				if ($defined(this.vgroup)) {
					new Element('div').setHTML(message).injectInside(this.vgroup);
				}
				this.valid = false;
			}
		}
	},
	addCompareFieldValidator: function(el, el2, message) {
		el = $(el);
		el2 = $(el2);
		if ($defined(el) && $defined(el2)) {
			if (el.getProperty('value') != el2.getProperty('value')) {
				if ($defined(this.vgroup)) {
					new Element('div').setHTML(message).injectInside(this.vgroup);
				}
				this.valid = false;
			}
		}
	}
});