// variables comunes
var formatoFechaPorDefecto = "dd/mm/aaaaa";
var nCaracterIniDia = 0;
var nCaracterIniMes = 3;
var nCaracterIniAno = 6;
var nSeparadorFechaUno = 2;
var nSeparadorFechaDos = 5;
		
function validarFecha() { // valida fechas formato dd/mm/aaaa
	var args = validarFecha.arguments;
	var c = args[0];
	var campo = document.getElementById(c);
	var re = new RegExp("^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$");
	if (campo.value!="") {
		if (re.test(campo.value)){              
			if (!valFecha(campo.value)) {
				return false;
			} else {
				return true;
			}                   
		} else {     
			return false;
		}
	}
}
function esDigito(sChr){
	var sCod = sChr.charCodeAt(0);
	return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
	var bOk = false;
	bOk = bOk || ((oTxt.charAt(nSeparadorFechaUno) == "/") && (oTxt.charAt(nSeparadorFechaDos) == "/"));
	return bOk;
}
function finMes(oTxt){
	var nMes = parseInt(oTxt.substr(nCaracterIniMes, 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.substr(nCaracterIniDia, 2), 10);
	bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
	return bOk;
}
function valMes(oTxt){
	var bOk = false;
	var nMes = parseInt(oTxt.substr(nCaracterIniMes, 2), 10);
	bOk = bOk || ((nMes >= 1) && (nMes <= 12));
	return bOk;
}
function valAno(oTxt){
	var bOk = true;
	var nAno = parseInt(oTxt.substr(nCaracterIniAno, 4),10);
	bOk = bOk || (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 != ""){
		bOk = bOk && (valAno(oTxt));
		bOk = bOk && (valMes(oTxt));
		bOk = bOk && (valDia(oTxt));
		bOk = bOk && (valSep(oTxt));
		if (!bOk){
			return false;
		}
	} 
	else 
	{
		return false;
	}	
	return true;
}
function fMayusculas() { // convierte la cadena en mayúsculas
	var args = fMayusculas.arguments;
	var campo = args[0];
	var cadena = args[1];
	if (campo) {
		for (i=0;i<cadena.length;i++) {
			cadena = cadena.replace("'","");
		}	
		cadena = cadena.toUpperCase();
		campo.value = cadena;	
	}
}
function fMinusculas() { // convierte la cadena en minúsculas
	var args = fMinusculas.arguments;
	var campo = args[0];
	var cadena = args[1];
	if (campo) {
		for (i=0;i<cadena.length;i++) {
			cadena = cadena.replace("'","");
		}	
		cadena = cadena.toLowerCase();
		campo.value = cadena;	
	}
}
function isDigito(c){
  return ((c >= "0") && (c <= "9"));
}
function fconvertirANumero() { // limpia la cadena de cualquier carácter que no sea número
	var args = fconvertirANumero.arguments;
	var campo = args[0];
	var cadena = args[1];
	var cadenafin = "";
	if (campo) {
		for (i=0;i<cadena.length;i++) {
			var letra = cadena.substring(i,i+1);
			if (isDigito(letra)) {
				cadenafin = cadenafin + letra;
			}			
		}	
		campo.value = cadenafin;	
	}
}
function fNumero(e) { // sólo admite números
	if (!document.all) { var keycode = e.which;	} else { var keycode = e.keyCode }
	if ((keycode >= 48 && keycode<= 57) || keycode==44 || keycode==8 ) { return true; } else { return false; } 	
}
function fContarCaracteres(maximo) {
	var args = fContarCaracteres.arguments;
	var campo = args[0];
	var long_campo = campo.value;
	var caracteres = long_campo.length + 1;
	var maximo = args[1];
	maximo = parseInt(maximo);
	var DIV = args[2];
	var resto = maximo - caracteres;
	if (resto<0) { resto = 0; }
	DIV = document.getElementById(DIV);
	DIV.innerHTML = "Escr&iacute;be un m&aacute;ximo de " + resto + " caracteres";
	if (resto<=0) { 
		return false;
	} else {
		return true;
	}
}
function fmarcarRadio(elem,nombre_radio) {
	var oElem_RadioSeleccionado = document.getElementById(nombre_radio+elem);
	var oElem_nElementos_ra = document.getElementById("nElementos_ra");
	var nElem = parseInt(oElem_nElementos_ra.value);
	for (i=0;i<=nElem;i++) {
		var oElem_radio = document.getElementById(nombre_radio+i);
		oElem_radio.checked = false;
	}
	oElem_RadioSeleccionado.checked = true;
}
function fmarcarCheck(elem) {
	var oElem_Check = document.getElementById(elem);
	if (oElem_Check.checked) {
		oElem_Check.checked = false;
	} else {
		oElem_Check.checked = true;
	}
}

function fFormatoFecha() {
	var f = formatoFecha;
	if (f=="") { f = formatoFechaPorDefecto; }
	if (f=="dd/mm/aaaa") { 
		nCaracterIniDia = 0;
		nCaracterIniMes = 3;
		nCaracterIniAno = 6; 
	}
	if (f=="mm/dd/aaaa") { 
		nCaracterIniDia = 3;
		nCaracterIniMes = 0;
		nCaracterIniAno = 6;
	}
	if (f=="aaaa/mm/dd") { 
		nCaracterIniDia = 8;
		nCaracterIniMes = 5;
		nCaracterIniAno = 0;
		nSeparadorFechaUno = 4;
		nSeparadorFechaUno = 7;	 
	}
	return (f);		
}
