var B2C_FORM_ERRORS = new Array();
B2C_FORM_ERRORS['10'] = 'Campo obbligatorio';
B2C_FORM_ERRORS['11'] = 'Indirizzo email non valido';
B2C_FORM_ERRORS['12'] = 'Inserire un valore numerico';
B2C_FORM_ERRORS['13'] = 'La data non &egrave; valida';
B2C_FORM_ERRORS['14'] = 'Indirizzo web non valido';

String.prototype.trim = function () { return this.replace(/\s+$|^\s+/g, ""); }
String.prototype.rtrim = function () { return this.replace(/\s+$/, ""); }
String.prototype.ltrim = function () { return this.replace(/^\s+/, ""); }
function form_control_validate ( form_obj, callback ) {

	var list_fields = form_obj.elements;
	for (var i = 0; i != list_fields.length; i++) if (!form_control_field_validate(list_fields[i])) return false;
	if (callback != null) { if (eval(callback)) return true; else return false; } else return true;

}

function form_control_field_validate ( field ) {

	if (field.attributes['ddv-required'] != null && field.value.trim().length == 0) { alert(B2C_FORM_ERRORS['10']); field.focus(); return false; }

	if (field.attributes['ddv-maxlength'] != null) {

		if (field.value.length > field.attributes['ddv-maxlength'].value) {

			alert('Le dimensioni del campo non possono superare ' + field.attributes['ddv-maxlength'].value + ' caratteri!');
			field.focus();
			return false;

		}

	}

	if ((field.attributes['ddv-minlength'] != null) && (field.value.trim().length < field.attributes['ddv-minlength'].value) && (field.value.trim().length != 0)) { alert(B2C_FORM_ERRORS('1007')); field.focus(); return false; }

	if (field.attributes['ddv-type'] != null) {

		if ((field.attributes['ddv-type'].value.toLowerCase() == 'numeric') && isNaN(field.value)) { alert(B2C_FORM_ERRORS['12']); field.focus(); return false; }
		if (field.attributes['ddv-type'].value.toLowerCase() == 'date') { var DateFormat = field.attributes['ddv-dateformat'].value.toLowerCase() || 'en'; if (!form_control_verify_date(field.value, DateFormat)) { alert(B2C_FORM_ERRORS['13']); field.focus(); return false; } }

	}

	if (field.attributes['ddv-regexp'] != null) {

		if (!isBlank(field.value)) {

			var re = new RegExp('^' + field.attributes['ddv-regexp'].value + '$');
			if (field.value.match(re) == null) {

				alert('Il valore inserito non rispetta il formato previsto!');
				field.focus(); return false;

			}

		}

	}

	return true;

}

function form_control_verify_date ( DateString, DateFormat ) {

	var validFormat = false;
	try {

		var match = DateString.match(/^(\d?\d)\D(\d?\d)\D(\d{4}|\d{2})$/);
		if (match != null) {

			if (DateFormat == 'en') {

				var tmpDate = new Date(match[3], match[1] - 1, match[2]);
				validFormat = ((tmpDate.getMonth()==match[1]-1) && (tmpDate.getDate()==match[2]));

			} else {

				var tmpDate = new Date(match[3], match[2] - 1, match[1]);
				validFormat = ((tmpDate.getMonth()==match[2]-1) && (tmpDate.getDate()==match[1]));

			}

		}

	} catch (e) { alert(e.message); } finally { return validFormat; }

}

function form_control_set_property ( field_id, property, value ) {

	var the_field = document.getElementById( field_id );
	the_field.setAttribute(property, value);
	return;

}