function esDigito(sChr){
	var sCod = sChr.charCodeAt(0);
	return ((sCod > 47) && (sCod < 58));
}
function valSepDia(oTxt){
	var bOk = false;
	bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
	bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
	return bOk;
}
function valSepHora(oTxt){
	var bOk = false;
	bOk = bOk || ((oTxt.value.charAt(2) == ":") && (oTxt.value.charAt(5) == ":"));
	return bOk;
}
function valHora(oTxt){
	var bOk = false;
	var nHora = parseInt(oTxt.value.substr(0, 2), 10);
	bOk = bOk || ((nHora >= 0) && (nHora <24));
	return bOk;
}
function valMinutos(oTxt){
	var bOk = false;
	var nMnto = parseInt(oTxt.value.substr(3, 2), 10);
	bOk = bOk || ((nMnto >= 0) && (nMnto <60));
	return bOk;
}
function valSegundos(oTxt){
	var bOk = false;
	var nMnto = parseInt(oTxt.value.substr(6), 10);
	bOk = bOk || ((nMnto >= 0) && (nMnto <60));
	return bOk;
}
function finMes(oTxt){
	var nMes = parseInt(oTxt.value.substr(3, 2), 10);
	var nRes = 0;
	switch (nMes){
		case 1: nRes = 31; break;
		case 2: nRes = 29; break;
		case 3: nRes = 31; break;
		case 4: nRes = 30; break;
		case 5: nRes = 31; break;
		case 6: nRes = 30; break;
		case 7: nRes = 31; break;
		case 8: nRes = 31; break;
		case 9: nRes = 30; break;
		case 10: nRes = 31; break;
		case 11: nRes = 30; break;
		case 12: nRes = 31; break;
	}
	return nRes;
}
function valDia(oTxt){
	var bOk = false;
	var nDia = parseInt(oTxt.value.substr(0, 2), 10);
	bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
	return bOk;
}
function valMes(oTxt){
	var bOk = false;
	var nMes = parseInt(oTxt.value.substr(3, 2), 10);
	bOk = bOk || ((nMes >= 1) && (nMes <= 12));
	return bOk;
}
function valAno(oTxt){
	var bOk = true;
	var nAno = oTxt.value.substr(6);
	bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
	if (bOk){
		for (var i = 0; i < nAno.length; i++){
			bOk = bOk && esDigito(nAno.charAt(i));
		}
	}
	return bOk;
}
function valFecha(oTxt){
	var bOk = true;
	if (oTxt.value != ""){
		bOk = bOk && (valAno(oTxt));
		bOk = bOk && (valMes(oTxt));
		bOk = bOk && (valDia(oTxt));
		bOk = bOk && (valSepDia(oTxt));
		/*
		if (!bOk){
			alert("Fecha inválida");
			oTxt.value = "";
			oTxt.focus();
		}
		*/
		return bOk;
	}
}
function valHHMMSS(oTxt){
	var bOk = true;
	if (oTxt.value != ""){
		bOk = bOk && (valHora(oTxt));
		bOk = bOk && (valMinutos(oTxt));
		bOk = bOk && (valSegundos(oTxt));
		bOk = bOk && (valSepHora(oTxt));
		/*
		if (!bOk){			
			alert("Hora inválida");
			oTxt.value = "";
			oTxt.focus();			
		}
		*/
		return bOk;
	}
}
function validoHora(oTxt){
	if(oTxt.value.length>0){
		var bOk=validarHora(oTxt);
		if(!bOk){
			alert("Hora no válida");
			oTxt.value = "";
			oTxt.focus();
		}
	}
}
function validoDia(oTxt){
	if(oTxt.value.length>0){	
		var bOk=validarFecha(oTxt);
		if(!bOk){
			alert("Fecha no válida");
			oTxt.value = "";
			oTxt.focus();
		}
	}
}
function validarFecha(oTxt){
	var dia=oTxt.value;
	var largo=oTxt.value.length;
	if(largo==6 || largo==8 || largo==10){
		if( (dia.indexOf("/")==2 || dia.indexOf("-")==2) && (dia.lastIndexOf("/")==5 || dia.lastIndexOf("-")==5)){
			return valFecha(oTxt);			
		} 
		if(sonNumeros(dia)){			
			dia=dia.substring(0,2)+"/"+dia.substring(2,4)+"/"+dia.substring(4);
			oTxt.value=dia;
			return valFecha(oTxt);			
		}
	}
	return false;
}
function sonNumeros(digitos){
	var bOk = true;
	for (var i = 0; i < digitos.length; i++){
		bOk = bOk && esDigito(digitos.charAt(i));
	}
	return bOk;
}
function validarHora(oTxt){	
	var hora=oTxt.value;
	var largo=oTxt.value.length;
	if(largo==8){
		return valHora(oTxt);		
	} 
	if(largo==6 && sonNumeros(hora)){			
		hora=hora.substring(0,2)+":"+hora.substring(2,4)+":"+hora.substring(4);
		oTxt.value=hora;
		return valHHMMSS(oTxt);		
	}	
	return false;
}

