var codigoTecla = -1;
var isTeclaValida = false;

function permitirSomenteLetras(e) {
	valor = getKeyChar(e)
	return isLetra(valor);
}
function permitirSomenteNumeros(e) {
	valor = getKeyChar(e)
	return isNumero(valor);
}

function isTeclaPermitidaTodos(e) {
	return (isTeclaBack(e) || isTeclaTab(e) || isTeclaPosicao(e) || isTeclaDel(e))
}

function isTeclaPosicao(e) {
	codigo = getKeyCod(e);
	return (codigo >= 37 && codigo <= 40);
}

function isTeclaBack(e) {
	codigo = getKeyCod(e);
	return (codigo == 8);
}

function isTeclaTab(e) {
	codigo = getKeyCod(e);
	return (codigo == 9);
}

function isTeclaDel(e) {
	codigo = getKeyCod(e);
	return (codigo == 46);
}

function isTeclaBarra(e) {
	codigo = getKeyCod(e);
	return (codigo == 47);
}

function validarTeclaNumero(e) {
	isTeclaValida = false;
	codigoTecla = getKeyCod(e);
	isTeclaValida = (isTeclaPermitidaTodos(e) || permitirSomenteNumeros(e));
	return isTeclaValida;
}

function validarTeclaData(e) {
	return validarTeclaDtHr(e,"DT");
}

function validarTeclaHoraHM(e) {
	return validarTeclaDtHr(e,"HM");
}

function validarTeclaHoraHMS(e) {
	return validarTeclaDtHr(e,"HMS");
}

function validarTeclaDtHr(e, tipo) {
	isTeclaValida = false;
	codigoTecla = getKeyCod(e);
	objSource = getSouce(e);
	var valor = objSource.value
	tamanho = 0;
	charDiv = ""
	switch(tipo) {
		case "DT":
			charDiv = "/";
			tamanho = 10
			break;
		case "HMS":
			charDiv = ":";
			tamanho = 8;
			break;
		case "HM":
			charDiv = ":";
			tamanho = 5;
			break;
	}
	if(isKeyChar(e,charDiv)) {
		if(valor.length == 0 // Caso esteje vazio
		   || (valor.length-1) == valor.lastIndexOf(charDiv) // Caso o ultimo caracter seja o separador
		   || valor.charAt(3) == charDiv // Se a quarta posição ser igual ao separador
		   || valor.lastIndexOf(charDiv) == 4 // Se o ultimo separador estiver na posição 5
		   || (valor.indexOf(charDiv) == 2 && valor.lastIndexOf(charDiv) == 5) // Se a terceira e a sexta posição for igual ao separador
		   || (valor.indexOf(charDiv) >= 0 && tamanho == 5)
		) {
			isTeclaValida = false;
			return isTeclaValida;
		}
	}
	isTeclaValida = ((isTeclaPermitidaTodos(e) || isKeyChar(e,charDiv) || permitirSomenteNumeros(e)));
	return isTeclaValida;
}