function es_alfabetico (v) {
	var RE= /^([\sa-záéíóú]|[\D])*$/i;
	if (v.match(RE)==null) return false;
	return true;
}

function es_alfanumerico (v) {
	var RE= /^[\s\w]+$/;
	if (v.match(RE)==null) return false;
	return true;
}

function es_numerico (v) {
	var RE= /^[-+]?\d+$/;
	if (v.match(RE)==null) return false
	return true;
}

function es_nif(v) {
	var RE = /(^([0-9]{8,8}\-[A-Z])|([A-Z]\-([0-9]{8,8})))$/;
	if (v.match(RE)==null) return false;
	return true;
}

function es_cp (v) {
	var RE = /(^([0-5])([0-9]{4,4}))$/
	if (v.match(RE)==null) return false;
	return true;
}

function es_fecha (v) {
	var RE=/^(0[1-9]|[12][0-9]|3[01])([- /.])(0[1-9]|1[012])\2((19|20)?\d\d)$/;
	if (v.match(RE)==null) return false;
	else if (!comprobarDiaMes(v, RE)) return false;
	return true;
}

function es_email (v) {
	if (v.length > 0) {
		var RE = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/;
		if (v.match(RE)==null) return false;
	} else
		return false;
	return true;
}

function es_email_enum (v) {
	if (v.length > 0) {
		v += ',';
		var RE = /^(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})([ ]*[,|;][ ]*))+$/;
		if (v.match(RE)==null) return false;
	} else
		return false;
	return true;

}


function es_ipv4 (v) {
	var RE=/^((([2]{1}[0-4]{1}[0-9]{1})|([2]{1}[5]{1}[0-5]{1})|([1]{1}[0-9]{2})|([0-9]{1,2}))[.]{1}){4}$/;
	v += '.';
	if (v.match(RE)==null) return false;
	return true;
}

// Només valida bé si és la notació decimal de IPv6. Quedaria pendent de fer uan ER que validi segons el format Hexadecimal
function es_ipv6 (v) {
	var RE=/^((([2]{1}[0-4]{1}[0-9]{1})|([2]{1}[5]{1}[0-5]{1})|([1]{1}[0-9]{2})|([0-9]{1,2}))[.]{1}){16}$/;
	v += '.';
	if (v.match(RE)==null) return false;
	return true;
}

function es_ip (v) {
	return es_ipv4(v) || es_ipv6(v);
}

function es_ipv4_enum (v) {
	ips = v.split(/[,|;][ ]*/);
	for (var i = 0; i < ips.length; i++) {
		if (!es_ipv4(ips[i]))
			return false;
	}
	return true;
}

function es_ipv6_enum (v) {
	ips = v.split(/[,|;][ ]*/);
	for (var i = 0; i < ips.length; i++) {
		if (!es_ipv6(ips[i]))
			return false;
	}
	return true;
}

function es_ip_enum (v) {
	ips = v.split(/[,|;][ ]*/);
	for (var i = 0; i < ips.length; i++) {
		if (!es_ipv6(ips[i]) && !es_ipv4(ips[i]))
			return false;
	}
	return true;
}

function es_version (v) {
	var RE = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,4}$/;
	if (v.match(RE)==null) return false;
	return true;
}

function comprobarDiaMes(v, RE)
{
	var d = v.substr(0,2);
	var m = v.substr(3,2);
	var y = v.substr(6,4);

	//if(m < 1 || m > 12 || y < 1900 || y > 2100) return false;
	if(m == 2)
	{
		if (y<100)	y += 2000;
		var days = ((y % 4) == 0) ? 29 : 28;
	}
	else if(m == 4 || m == 6 || m == 9 || m == 11)
	{
		var days = 30;
	}
	else
	{
		var days = 31;
	}
	return (d>=1 && d<=days);
}
