<!--

function FormValidation() {
	this.requireds = [];
	this.notrequireds = [];
	this.compares = [];
	this.form = '';
	this.lang = 0;

	this.messages = new Array(
							  // pt-br
							  new Array(
										'O campo %%FIELD%% é obrigatório.',
										'O campo %%FIELD%% é inválido.',
										'Os campos %%FIELD1%% e %%FIELD2%% não conferem.'
										),
							  // en
							  new Array(
										'The field %%FIELD%% is required.',
										'The field %%FIELD%% is invalid.',
										'The fields %%FIELD1%% and %%FIELD2%% not match.'
										)							  
							  );
}

FormValidation.prototype.setForm = function(value) {
	this.form = value;
}

FormValidation.prototype.setLang = function(value) {
	if (value == 'pt-br') {
		this.lang = 0;
	} else if (value == 'en') {
		this.lang = 1;
	}
}

FormValidation.prototype.setCompares = function(arr) {
	this.compares = arr;
}

FormValidation.prototype.setRequireds = function(arr) {
	this.requireds = arr;
}

FormValidation.prototype.setNotRequireds = function(arr) {
	this.notrequireds = arr;
}

FormValidation.prototype.isValid = function() {
	var form = findObj(this.form);
	var msg = '';
	var name, value, title, langref;
	var value1, value2, day, month, year;

	for (var i = 0; i < form.elements.length; i++) {
		name = form.elements[i].name;
		title = form.elements[i].title;
		value = form.elements[i].value;
		type = form.elements[i].type;

		if (title != '') {
			langref = title;
		} else {
			langref = name;
		}

		if (type != 'submit') {
			if (type == 'select-one' && name.indexOf('_Day') > 0) {
				name = name.replace('_Day', '');
				day = value;

				i++;
				month = form.elements[i].value;

				i++;
				year = form.elements[i].value;

				if ((inArray(name, this.requireds) && (day == '' || month == '' || year == '')) || (this.notrequireds.length > 0 && !inArray(name, this.notrequireds) && (day == '' || month == '' || year == ''))) {
					msg += this.messages[this.lang][0].replace('%%FIELD%%', langref) + '\n';
				} else if (day != '' || month != '' || year != '') {
					value = day + '/' + month + '/' + year;

					if (!value.isDate()) {
						msg += this.messages[this.lang][1].replace('%%FIELD%%', langref) + '\n';
					}
				}
			} else {
				if ((inArray(name, this.requireds) && value == '') || (this.notrequireds.length > 0 && !inArray(name, this.notrequireds) && value == '')) {
					msg += this.messages[this.lang][0].replace('%%FIELD%%', langref) + '\n';
				} else if (value != '' && title == 'E-mail' && !value.isEmail()) {
					msg += this.messages[this.lang][1].replace('%%FIELD%%', langref) + '\n';
				} else if (value != '' && title == 'CPF' && !value.isCpf()) {
					msg += this.messages[this.lang][1].replace('%%FIELD%%', langref) + '\n';
				}
			}
		}
	}

	for (var i = 0; i < this.compares.length; i++) {
		value1 = findObj(this.compares[i][0]);
		value2 = findObj(this.compares[i][1]);

		if (value1.value != value2.value) {
			msg += this.messages[this.lang][2].replace('%%FIELD1%%', value1.title).replace('%%FIELD2%%', value2.title) + '\n';
		}
	}

	if (msg == '') {
		return true;
	} else {
		alert(msg);
		return false;
	}
}

-->