function trim(str) {
	var str = str.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
	while (ws.test(str.charAt(--i)))
		;
	return str.slice(0, i + 1);
}

var errorBorder = "1px solid red";
var successBorder = "1px solid #A5ACB2";

function setError(field, dafaultMessage, forceMessage) {
	field.style.border = errorBorder;
	errMsg = document.getElementById("error_" + field.name);
	if (errMsg) {
		if (forceMessage) {
			errMsg.innerHTML = dafaultMessage;
		}
		errMsg.style.display = "block";
	} else {
		tempValue = field.value;
		field.parentNode.innerHTML = field.parentNode.innerHTML
				+ '<div id="error_' + field.name + '" class="validationError">'
				+ dafaultMessage + '</div>';
		field.value = tempValue;
	}
}
function setSuccess(field) {
	field.style.border = successBorder;
	errMsg = document.getElementById("error_" + field.name);
	if (errMsg) {
		errMsg.style.display = "none";
	}
}

function checkRequired(field, forceMessage) {
	if ((field.type!="checkbox" && trim(field.value) == "") || (field.type=="checkbox" && !field.checked)) {
		setError(field, "Il campo è obbligatorio", forceMessage);
		return false;
	} else {
		setSuccess(field);
		return true;
	}
}

function checkEquals(field, field2, forceMessage) {
	if (trim(field.value) != trim(field2.value)) {
		setError(field, "I campi non sono uguali", forceMessage);
		return false;
	} else {
		setSuccess(field);
		return true;
	}
}

function checkEmail(field, forceMessage) {
	var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+[.])+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(field.value)) {
		setError(field, "Email non valida", forceMessage);
		return false;
	} else {
		setSuccess(field);
		return true;
	}
}

function checkDate(field, forceMessage) {
	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
	if (re.test(field.value)) {
		var dArr = field.value.split("/");
		var d = new Date(dArr[1] + "/" + dArr[0] + "/" + dArr[2]);
		if (d.getDate() == dArr[0] && d.getMonth() + 1 == dArr[1]
				&& d.getFullYear() == dArr[2]) {
			setSuccess(field);
			return true;
		}
	}
	setError(field, "Data non valida (gg/mm/aaaa)", forceMessage);
	return false;
}

