function ValidarCtlAno(ctl) {
	var str = ctl.value;
	if (AnoValido(str)) return true;
	if (str.length == 0) return true;
	ctl.value = "";
	return false;
}

function AnoValido(ano) {
	return /^[0-9]{4}$/.test(ano);
}

function ValidarCtlHora(ctl) {
	var str = ctl.value;
	if (HoraValida(str)) return true;
	if (str.length == 0) return true;
	ctl.value = "";
	return false;
}

function HoraValida(hora) {
	return /^([0-1]?[0-9]{1}|[2]{1}[0-3]{1})$/.test(hora);
}

function ValidarCtlMinuto(ctl) {
	var str = ctl.value;
	if (MinutoValido(str)) return true;
	if (str.length == 0) return true;
	ctl.value = "";
	return false;
}

function MinutoValido(hora) {
	return /^[0-5]?[0-9]{1}$/.test(hora);
}

function ValidarCtlHoraMinuto(ctl) {
	var str = ctl.value;
	if (str.length == 0) return true;
	var arr = str.split(":");
	var hora = "";
	var minuto = "";
	var correcto = false;
	if (arr.length == 1) {
		if (HoraValida(arr[0])) {
			hora = parseInt(arr[0], 10);
			minutos = "00";
			correcto = true;
		}
	} else if (arr.length == 2) {
		if (HoraValida(arr[0]) && MinutoValido(arr[1])) {
			hora = parseInt(arr[0], 10);
			if (arr[1].length == 1) {
				minutos = "0" + arr[1];
			} else {
				minutos = arr[1];
			}
			correcto = true;
		}
	}
	if (correcto) {
		ctl.value = hora + ":" + minutos;
	} else {
		ctl.value = "";
		return false;
	}
}

function HoraMinutoValido(hora) {
	return /^([0-1]?[0-9]{1}|[2]{1}[0-3]{1})(:([0-5]?[0-9]{1}))?$/.test(hora);
}

function ValidarCtlEnteroUnsigned(ctl, numero) {
	var str = ctl.value;
	if (EnteroUnsignedValido(str)) {
		if (!numero || str.length == numero) return true;
	}
	if (str.length == 0) return true;
	ctl.value = "";
	return false;
}

function EnteroUnsignedValido(valor) {
	return /^[0-9]+$/.test(valor);
}

function ValidarNumerico(ctl) {
	var str = ctl.value;
	str = str.replace(",", ".");
	var flt = parseFloat(str);
	if (isNaN(flt)) {
		ctl.value = "";
		return false;
	}
	ctl.value = String(flt).replace(".", ",");
	return true;
}

function validarNumerico(valor) {
	valor = valor.replace(",", ".");
	var flt = parseFloat(valor);
	if (isNaN(flt)) {
		return false;
	}
	return 	String(flt).replace(".", ",");;
}

function ValidarDNI(dni) {
  valorDNI = dni.value;
  numero = parseInt(1+valorDNI.substr(0,8))-100000000;
  let = (valorDNI.substr(8,1)).toUpperCase();
  if(!isNaN(numero) && /^\w+$/.test(let)) {
	  numero = numero % 23;
	  letra='TRWAGMYFPDXBNJZSQVHLCKET';
	  letra=letra.substring(numero,numero+1);
	  if (letra==let){
		return true;
	  }
	alert("A letra do DNI non corresponde: deber&iacute;a ser "+letra);
	return false;
	}
  alert("O documento introducido non corresponde a un DNI");
  return true;
}

function validarDNI(dni) {
	numero = parseInt(1+dni.substr(0,8))-100000000;
	let = (dni.substr(8,1)).toUpperCase();
	inicio = (dni.substr(0,1)).toUpperCase();
	if(!isNaN(numero) && !isNaN(inicio) && /^\w+$/.test(let)) {
		numero = numero % 23;
		letra='TRWAGMYFPDXBNJZSQVHLCKET';
		letra=letra.substring(numero,numero+1);
		if (letra==let) return true;
		else {
			alert("A letra do DNI non corresponde: deberķa ser "+letra);
			return false;
		}
	}
	else {
		alert("O documento introducido non corresponde a un DNI");
		return false;
	}
}

function ValidarData(ctl) {
	if (ctl.value != "") {
		var objData = new Date();
		var res = objData.ValidarFecha(ctl.value);
		if (!res) {
			ctl.value = "";
			return false;
		}
		if (res != ctl.value) ctl.value = res;
	}
	return true;
}
