// ************************************************************************<BR>
// Funciones creadas por RUBEN MALVERDE PINTO (2000-2001)
// ************************************************************************<BR>
// <SCRIPT>

//Valida el formato de la fecha
function ValidaFecha(objfecha)
{
	var fecha = objfecha.value;
	var largo = fecha.length;
	var tmpfecha = "";
	var contador
	var algo
	var d, m, a
	var dia, mes, anio
	var siglo = ""
	
	d = 0
	m = 0
	a = 0
	contador = 0
	
	var fec = new Date()
		
	// Si esta vacio y puede estarlo
	if (isEmpty(fecha))
		return true;
	
	for (i = 0 ; i < largo ; i++) {
		c = fecha.substring(i, i + 1);
		if ( (c < '0' || c > '9') && (c != '/') )
			{alert ("Caracteres no Permitidos")
			objfecha.focus()
			objfecha.select()
			return false;
			}
			
		if (c == '/') {
			contador += 1

			if (i == 0) // empieza con '/'
				{alert ("Formato de Fecha Erroneo")
				objfecha.focus();
				objfecha.select();
				return false;
				}
				
			if ( (c = fecha.substring(i + 1, i + 2) ) == '/')
				{alert ("Formato de Fecha Erroneo")
				objfecha.focus();
				objfecha.select();
				return false;
				}
			
			if (contador == 1){
				dia = fecha.substring(0, i)
				d = i + 1
				}
			
			if (contador == 2) {
				mes = fecha.substring(d, i)
				m = i + 1

				anio = fecha.substring(i + 1)
				a = i + 1
				if (anio.length == 0)
					{alert ("Formato de fecha erroneo")
					objfecha.focus();
					objfecha.select();
					return false;
					}
				}
			if (contador > 2)
				{alert ("Formato de fecha erroneo")
				objfecha.focus();
				objfecha.select();
				return false;
				}
			}
	}
	
	switch (largo){
	
	case 6:  //Si digito 6 caracteres d/m/yy
		// Asigna dia, mes y año
		dia = '0' + fecha.charAt(0);
		mes = '0' + fecha.charAt(2);
		anio = fecha.charAt(4) + fecha.charAt(5);
		siglo = "SI"
		break
	case 7:  //Si digito 7 caracteres d/mm/yy
		if (dia.length == 1 && mes.length == 2 && anio.length == 2)
			{		
			// Asigna dia, mes y año
			dia = '0' + fecha.charAt(0);
			mes = fecha.charAt(2) + fecha.charAt(3);
			anio = fecha.charAt(5) + fecha.charAt(6);				
			}
		else if (dia.length == 2 && mes.length == 1 && anio.length == 2) //Si digito 7 caracteres dd/m/yy
			{		
			// Asigna dia, mes y año
			dia = fecha.charAt(0) + fecha.charAt(1);
			mes = '0' + fecha.charAt(3);
			anio = fecha.charAt(5) + fecha.charAt(6);
			}
		siglo = "SI"
		break
	case 8:
	//Si digito 8 caracteres d/m/yyyy
	if (dia.length == 1 && mes.length == 1 && anio.length == 4)
		{		
		// Asigna dia, mes y año
		dia = '0' + fecha.charAt(0);
		mes = '0' + fecha.charAt(2);
		anio = fecha.charAt(4) + fecha.charAt(5) + fecha.charAt(6) + fecha.charAt(7);				
		siglo = "NO"
		}
	//Si digito 8 caracteres dd/mm/yy
	else if (dia.length == 2 && mes.length == 2 && anio.length == 2)
		{		
		// Asigna dia, mes y año
		dia = fecha.charAt(0) + fecha.charAt(1);
		mes = fecha.charAt(3) + fecha.charAt(4);
		anio = fecha.charAt(6) + fecha.charAt(7);
		siglo = "SI"
		}
		break
	case 10:  //Si digito 10 caracteres dd/mm/yyyy
		// Asigna dia, mes y año
		dia = fecha.charAt(0) + fecha.charAt(1);
		mes = fecha.charAt(3) + fecha.charAt(4);
		anio = fecha.charAt(6) + fecha.charAt(7) + fecha.charAt(8) + fecha.charAt(9);
		siglo = "NO"
		break
	default:
		{		
		alert("Error en el formato de la fecha");
		objfecha.focus();
		objfecha.select();
		return false;
		}
	}

	if (siglo == "SI")
		if (anio >= 50) // Pone siglo, si es mayor de 50 pone 1900
			anio = '19' + anio;
		else			// Pone siglo, si es menor de 50 pone 2000
			anio = '20' + anio;
	
	if (ValidaDiaMesAnio(dia,mes,anio)) // Si la fecha es valida
		{
		// Formatea fecha dd/mm/yyyy
		tmpfecha = dia + '/' + mes + '/' + anio;
		objfecha.value = tmpfecha;		
		//return true;
		}
	else
		{		
		objfecha.focus();
		objfecha.select();
		return false;
		}
}

// Valida dias, meses y años
function ValidaDiaMesAnio(dia, mes, anio)
{
	// Valida cantidad maxima de dias
	if (dia > 31) 
		{
		alert("El dia no corresponde");
		return false;
		}
	// Valida cantidad maxima de meses
	if (mes > 12)
		{
		alert("El mes no corresponde");
		return false;
		}
	// Valida los meses de 30 dias
	if ((mes==4||mes==6||mes==9||mes==11)&&(dia>30))
		{
		alert("El dia no corresponde, para el mes");
		return false;
		}
	// Valida febrero
	if (mes==2 && dia>28 && anio%4!=0) 
		{
		alert("Este año no es bisiesto");
		return false;		
		}		
	// Valida rango de año
	if (anio < 1950 || anio > 2050)
		{
		alert("El año esta fuera de rango");
		return false;
		}
	return true;
}

// Valida si es numero
function ValidaNumero(campo)
{
	if(!isEmpty(campo.value))
		if (!IsDigit(campo.value)){
			alert("Sólo se aceptan caracteres numéricos")
			campo.focus()
			campo.select()
			return false
		}
	return true
}

// Valida si es digito
function IsDigit(Str)
{
	 var ch
	 
	 if (Str.length == 0)
		 return false;

	 for (i = 0 ; i < Str.length ; i++) {
		 ch = Str.substring(i,i+1);
		 if (ch < '0' || ch > '9')
			 return false;
	 }
	 return true;    
}

// Valida que contenga solo caracteres alfabeticos
function ValidaNombre(nombre)
{
	if (isChar(nombre.value) == false) {
		alert('Sólo se aceptan caracteres alfabéticos.');
		nombre.focus();
		nombre.select();
	}
}

// Verifica si es caracter valido
function isChar(str)
{
	 var ch;
	 for (var i=0; i<str.length; i++) {
		 ch=str.charAt(i);
		 if ( (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z') && (ch != 'ñ') && (ch != 'Ñ') && (ch != ' ') && (ch != '.') && (ch != ',') && (ch != '/') && (ch != '\'') && (ch != '@'))
			 return false;
	 }
	 return true;
}

// Valida formato de direccion de correo
function ValidaMail(email)
{
	var ch;
	var i = 0;
	var user = "";
	var serv = "";
	var fin = "";
	var campo = new String(email.value);

	if (campo.length != 0){
		ch = campo.substring(i,i+1);
		while (ch != "@" && i < campo.length){
			i++;
			user += ch;
			ch = campo.substring(i,i+1);
			}
		if (user.length == 0){
			alert("Formato de e-mail incorrecto")
			email.focus();
			email.select();
			}
		else{
			i++;
			ch = campo.substring(i,i+1);
			while (ch != "." && i < campo.length){
				i++;
				serv += ch;
				ch = campo.substring(i,i+1);
				}
			if (serv.length == 0){
				alert("Formato de e-mail incorrecto")
				email.focus();
				email.select();
				}
			else{
				i++;
				ch = campo.substring(i,i+1);
				while (i <= campo.length){
					i++;
					fin +=ch
					ch = campo.substring(i,i+1);
					}
				if (fin.length == 0){
					alert("Formato de e-mail incorrecto")
					email.focus();
					email.select();
					}
				}
			}
		}
}

    function validarCampos(string) 
    {
        var strretorno='';
        var Invalidos="~^'&\"";

        for (var i=0; i<string.length; i++)
        {
            if (Invalidos.indexOf(string.charAt(i)) == -1)
            {
              strretorno += string.charAt(i);
            }    
        }
        return strretorno;      
    } 
    
function LimpiaReservado(Texto)
{
    var reservado = new Array("\"\"","'","&","--");
    for (i = 0; i < reservado.length; i++)
        while (Texto.value.indexOf(reservado[i], 0) != -1) 
            Texto.value = Texto.value.replace(reservado[i], "");
    Texto.value = Texto.value.replace(/select/gi, "");
    Texto.value = Texto.value.replace(/insert/gi, "");
    Texto.value = Texto.value.replace(/update/gi, "");
    Texto.value = Texto.value.replace(/delete/gi, "");
    Texto.value = Texto.value.replace(/drop/gi, "");
}