// JavaScript Document
var g_fechaYMD="YMD";

function validarCadena (cadena, validacion)
{
    var largo=cadena.length;
    var i;
    var ch;
    var cpunto=0;
    var carroba=0;
    for (i=0;i<largo;i++)
    {
        ch=cadena.substr(i,1);
        if (validacion=="caracteresConEspacio")
        {
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch=='á'||ch=='é'||ch=='í'||ch=='ó'||ch=='ú'||ch=='ñ'||ch=='Ñ'||ch==' '))
                return false;
        }
        else if (validacion=="caracteresNumerosSimb")
        {//vhm
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z' ||ch>='0'&&ch<='9' ||ch=='-'||ch=='_'))
                return false;
        }
        else if (validacion=="caracteresNumerosComa")
        {//vhm
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch=='á'||ch=='é'||ch=='í'||ch=='ó'||ch=='ú'||ch=='ñ'||ch=='Ñ'||ch==' '||ch==','))
                return false;
        }
        else if (validacion=="caracteres")
        {
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch=='á'||ch=='é'||ch=='í'||ch=='ó'||ch=='ú'||ch=='ñ'||ch=='Ñ' ||ch==' '))
                return false;
        }
        else if (validacion=="caracteresSinTildes")
        {
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'))
                return false;
        }
        else if (validacion=="caracteresSinTildesConNumeros")
        {
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch>='0'&&ch<='9'))
                return false;
        }
        else if (validacion=="enteros")
        {
            if (!(ch>='0'&&ch<='9'))
                return false;
        }
        else if (validacion=="porcentaje")
        {
            if (!(ch>='0'&&ch<='9'))
                return false;
        }
        else if (validacion=="enterosConEspacio")
        {
            if (!(ch>='0'&&ch<='9'||ch==' '))
                return false;
        }
        else if (validacion=="decimales")
        {
            if (!(ch>='0'&&ch<='9'))
                if (!(ch=='.'))
                    return false;
                else
                if (cpunto==0) cpunto++;
                else return false;
        }
        else if (validacion=="decimalesConEspacio")
        {
            if (!(ch>='0'&&ch<='9'||ch==' '))
                if (!(ch=='.'))
                    return false;
                else
                if (cpunto==0) cpunto++;
                else return false;
        }
        else if (validacion=="correo")
        {
            if (!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch>='0'&&ch<='9'||ch=='@'||ch=='.'||ch=='_'||ch=='-'))
                return false;

            if (ch=='@') carroba++;
            if (ch=='.') cpunto++;
        }
        else if (validacion=="web")
        {
            if (ch=='.') cpunto++;
        }

        else if (validacion=="soloVacio")
        {
        }
        else if (validacion=="telefono")
        {
            if (!(ch>='0'&&ch<='9'||ch==' '||ch=='-'||ch=='('||ch==')'||ch=='+'))
                return false;
        }
        else if (validacion=="enterosPorcentaje")
        {
            if (!(ch>='0'&&ch<='9'))
                return false;
        }
        else if (validacion=="enterosPorcentajeCien")
        {
            if (!(ch>='0'&&ch<='9'))
                return false;
        }
        else if (validacion=="decimalesPorcentaje")
        {
            if (!((ch>='0'&&ch<='9')||ch=='.' ||ch==',' ))
                return false;
        }
    }
    if (validacion=="correo")
    {
        if (carroba!=1) return false;
        if (cpunto==0) return false;
    }
    if (validacion=="web")
    {
        if (cpunto==0) return false;
    }
    if (validacion=="enterosPorcentajeCien")
    {
        if (parseFloat(cadena)>100) return false
    }
    if (validacion=="decimalesPorcentaje")
    {
        cadena2=cadena.replace('.','');
        cadena2=cadena2.replace(',','.');
        if (parseFloat(cadena2)>100) return false
    }
   
    if (validacion=="porcentaje")
        if (cadena>100) return false
    
    if (validacion=="expresion_regular")
    {
        var Template = /^[a-zá-ú)(ñÑ?\n 0-9,.:;-]+$/i;//^[a-z]$/i;// /[A-Za-zs /-/ñÑ1-9(),.:;]/;
        if (!Template.test(cadena))
            return false;
    }
    return true;
}
function buscarMensaje (validacion)
{ 
    var res="";
    if (validacion=="caracteresConEspacio")
        res='El campo solo permite caracteres ';
    else if (validacion=="caracteres")
        res='El campo solo permite caracteres ';
    else if (validacion=="caracteresSinTildes")
        res='El campo solo permite caracteres sin tildes ';
    else if (validacion=="caracteresSinTildesConNumeros")
        res='El campo solo permite caracteres y números';
    else if (validacion=="enteros")
        res='El campo solo permite números enteros';
    else if (validacion=="enterosConEspacio")
        res='El campo solo permite números enteros y espacios en blanco ';
    else if (validacion=="decimales")
        res='El campo solo permite números decimales';
    else if (validacion=="decimalesConEspacio")
        res='El campo solo permite números decimales y espacios en blanco';
    else if (validacion=="correo")
        res='El campo solo permite direcciones de correo ';
    else if (validacion=="web")
        res='El campo solo permite direcciones web ';
    else if (validacion=="decimalesPorcentaje")
        res='El campo solo permite valores menores al 100% ';
    else if (validacion=="enterosPorcentaje")
        res='El campo solo permite valores menores al 100% ';
    else if (validacion=="enterosPorcentajeCien")
        res='El campo solo permite valores menores o iguales a 100% ';

    else
        res='El valor del campo no es válido';
    return res;
}

function validarMensajeDiv (objeto, vacio, validacion)
{
    var valor = objeto.value;
    var res=true;
    if (vacio)
        res=validarNoVacio (objeto);
    if (res)
    {
        if(validacion=="cedula"){

            return validarCedulaMensaje(objeto, vacio);
        }
        else
        {
            if (!validarCadena (valor, validacion))
            {
                var mensaje=buscarMensaje (validacion);
                mostrarMensaje (objeto, mensaje);
                return false;
            }
        }

        ocultarMensaje (objeto);
    }
    return res;
}

function validarMensajeFem (objeto, vacio, validacion)
{
    var valor = objeto.value;
    var res=true;

    if (res)
    {
        if (!validarCadena (valor, validacion))
        {
            var mensaje=buscarMensaje (validacion);
            mostrarMensaje (objeto, mensaje);
            return false;
        }
        ocultarMensaje (objeto);
    }
    return res;
}

function validarCampoAlert (objeto, vacio, validacion, nombre)
{
    var valor = objeto.value;
    if (validacion=="fechaSinHora")
        return validarFechaAlert(objeto,g_fechaYMD,false,vacio);
    if (validacion=="fechaConHora")
        return validarFechaAlert(objeto,g_fechaYMD,true,vacio);
    if (validacion=="cedula")
        return validarCedulaAlert(objeto, vacio, nombre);
    if (validacion=="contrasena")
        return validarContrasena(objeto);
    if (validacion=="correo"){
        if (!validarCorreo(objeto))
            alert ("El correo electrónico es inválido debe incluir solo letras, números, puntos (.), guiones (-) y caracteres de subrayado (_), no puede incluir caracteres especiales ni acentuados.")
        return validarCorreo(objeto);
    }
    if (validacion=="web"){
        if (!validarWeb(objeto))
            alert ("La dirección de la página web es inválida.")
        return validarWeb(objeto);
    }

    if (vacio||valor.length>0)
    { 
        if (vacio)
            if (valor.length==0)
            {
                var mensaje="El campo "+nombre+" no puede estar vacío";
                alert (mensaje);
                return false;
            }
        if (valor==0||valor==0.00){
            var mensaje="El campo "+nombre+" no puede ser CERO";
            alert (mensaje);
            return false;
        }
	  
        if (!validarCadena (valor, validacion))
        {
            var mensaje="El valor del campo "+nombre+" es incorrecto";
            alert (mensaje);
            return false;
        }
    }
    return true;
}

function validarPersonaAlert (objeto, vacio)
{
    var valor = objeto.value;
    if(vacio || valor==0)
    {
        var mensaje = "Debe seleccionar una Entidad contratante ó Proveedora.\nClic en buscar";
        alert(mensaje);
        return false;
    }
    return true;
}

function validarCampoAlert2 (objeto, vacio, validacion, nombre)//puede estar vacio
{
    var valor = objeto.value;
    if (!validarCadena (valor, validacion))
    {
        var mensaje="El valor del campo "+nombre+" es incorrecto";
        alert (mensaje);
        return false;
    }

    return true;
}

function validarNumeroIdentificacion (objeto, vacio, tipoDocumento)
{
    if (tipoDocumento=="CEDULA") //Cedula
    {
        if (objeto.value.length!=10)
        {
            mostrarMensaje (objeto, 'El número de dígitos debe ser de 10');
            return false;
        }
        else
            return validarCedulaMensaje(objeto,vacio);
    }
    else 
    {
        if (objeto.value.length==0)
        {
            mostrarMensaje (objeto, 'El Número de Identificación no puede estar vacio');
            return false;
        }
    }
    ocultarMensaje (objeto);
    return true;
}

function validarCampo (objeto, vacio, validacion, nombre)
{
    var valor = objeto.value;
    var mensaje="";
    if (vacio)
        if (valor.length==0)
        {
            mensaje="El campo "+nombre+" no puede estar vacio";
            mostrarMensaje (objeto, mensaje);
            return false;
        }
    if (!validarCadena (valor, validacion))
    {
        mensaje="El valor del campo es incorrecto";
        mostrarMensaje (objeto, mensaje);
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarConMensaje (objeto, vacio, validacion, nombre, nombreDiv)
{
    var valor = objeto.value;
    var mensaje="";
    if (vacio)
        if (valor.length==0)
            mensaje="El campo "+nombre+" no puede estar vaci\xedo";
    if (validacion!="")
        if (validacion=="cedula")
            mensaje=validarCedula (valor);
        else if (!validarCadena (valor, validacion))
            mensaje="El valor del campo "+nombre+" no es correcto";
    asignarValorDiv(nombreDiv,mensaje);
    if (mensaje!="")
        return false;
    ocultarMensaje (objeto);
    return true;
}

function validarNoVacio (objeto)
{
    var valor = objeto.value;
    if (valor.length==0)
    {
        mostrarMensaje (objeto, "Este campo no puede estar vac\xedo");
        ////objeto.focus();
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarNoVacioAlert (objeto,nombre)
{
    var valor = objeto.value;
    if (valor.length==0)
    {
        alert ("El campo "+nombre+" no puede estar vac\xedo");
        ////objeto.focus();
        return false;
    }
    return true;
}

function validarCadenaURL(url) {
    var regex=/^(ht|f)tps?:\/\/\w+([\.\-\w]+)?\.([a-z]{2,4}|travel)(:\d{2,5})?(\/.*)?$/i
    return regex.test(url);
}

function validarCadenaEmail(valor) {
    if (/^\w+([\.-]\w+)*@\w+([\.-]\w+)*(\.\w{2,4})+$/.test(valor))
        return true;
    else
        return false;
}

function validarCorreo (objeto, vacio)
{
    var valor = objeto.value;
    var res=true;
    if (vacio)
        res=validarNoVacio (objeto);
    if (res)
    {
        if (!validarCadenaEmail(valor))
        {
            mostrarMensaje (objeto, "El valor ingresado no es un correo válido");
            return false;
        }
        ocultarMensaje (objeto);
    }
    return res;
}

function validarWeb (objeto)
{
    var valor = objeto.value;
    var res = true;
    var texto;
    
    if (objeto.value.length > 0)
        res=false;
    if (!res)
    {
        if (!validarCadenaURL(valor))
        {
            texto = "La dirección de la página web es inválida.";
            
            if (!(valor.substr(0,7) == 'http://'))
                if (!(valor.substr(0,8) == 'https://'))
                    texto += ", debe iniciar por http:// o por https://";
                    
            mostrarMensaje (objeto, texto);
            return false;
        }
        ocultarMensaje (objeto);
        return true;
    }
    return res;
}
function validarEntero (objeto,vacio)
{
    var valor = objeto.value;
    var res=true;
    if (vacio)
        res=validarNoVacio (objeto);
    if (res)
    {
        if (!validarCadena (valor, "enteros"))
        {
            mostrarMensaje (objeto, "El valor ingresado no es correcto");
        
            return false;
        }
        ocultarMensaje (objeto);
    }
    return res;
}

function validarPorcentaje (objeto,vacio)
{
    var valor = objeto.value;
    var res=true;
    if (vacio)
        res=validarNoVacio (objeto);
    if (res)
    {
        if (!validarCadena (valor, "porcentaje"))
        {
            mostrarMensaje (objeto, "El valor porcentaje debe ser num&eacute;rico y menor a 100");

            return false;
        }
        ocultarMensaje (objeto);
    }
    return res;
}

function validarCedulaMensaje (objeto,vacio)
{
    var valor = objeto.value;
    var mensaje="";
    var res=true;
    if (vacio)
        res=validarNoVacio (objeto);
    if (res)
    {
        mensaje=validarCedula (valor);
        if (mensaje!="")
        {
            mostrarMensaje (objeto, mensaje);
            return false;
        }
        ocultarMensaje (objeto);
    }
    return res;
}

function validarCedulaAlert (objeto,vacio,nombre)
{
    var valor = objeto.value;
    var mensaje="";
    var res=true;
    if (vacio)
        res=validarNoVacioAlert (objeto,nombre);
    if (res)
    {
        mensaje=validarCedula (valor);
        if (mensaje!="")
        {
            alert (mensaje);
            return false;
        }
    }
    return res;
}

function mostrarMensaje (objeto, mensaje)
{
    var nombreDiv = "div"+objeto.name+"Error";
    asignarValorDiv(nombreDiv,mensaje);
    Element.show (nombreDiv);
}

function ocultarMensaje (objeto)
{
    var nombreDiv = "div"+objeto.name+"Error";
    asignarValorDiv(nombreDiv,"");
    Element.hide (nombreDiv);
}

function validarContrasena (objeto)
{
    var valor=objeto.value;
    if (valor.length<6)
    {
        mostrarMensaje (objeto, "La contrase&ntilde;a no tiene la longitud adecuada, debe contener m&iacute;nimo 6 caracteres, y solo letras y/o n&uacute;meros");
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarConfirmacion (objeto, contrasena)
{
    var confirmacion=objeto.value;
    if (contrasena!=confirmacion)
    {
        mostrarMensaje (objeto,"La confirmaci&oacute;n no es igual a la contrase&ntilde;a");
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarRUC (objeto, obligatorio)
{
    var valor=objeto.value;
    if (obligatorio||valor.length>0)
    {
        if (valor.length!=13)
        {
            mostrarMensaje (objeto, "El n&uacute;mero de ruc no es valido ");
            return false;
        }
        var mensaje=validarCedula (objeto.value);
        if (mensaje!="")
        {
            mostrarMensaje (objeto, mensaje);
            return false;
        }
    }
    ocultarMensaje (objeto);
    return true;
}

function validarRUCAlert (objeto, obligatorio)
{
    var valor=objeto.value;
    if (obligatorio||valor.length>0)
    {
        if (valor.length!=13)
        {
            alert("El número de ruc no es valido ");
            return false;
        }
        var mensaje=validarCedula (objeto.value);
        if (mensaje!="")
        {
            alert (mensaje);
            return false;
        }
    }
    return true;
}

function booleanValidarFecha (objeto, formato, conHora, obligatorio)
{
    var valor=objeto.value;
    var ano;
    var mes;
    var dia;
    if (obligatorio||valor.length>0)
    {
        if (formato=="YMD")
        {
            ano=valor.substr (0,4);
            mes=valor.substr (5,2)-1;
            dia=valor.substr (8,2);
        }
        else if (formato=="DMY")
        {
            dia=valor.substr (0,2);
            mes=valor.substr (3,2)-1;
            ano=valor.substr (6,4);
        }
        try
        {
            var miFecha = new Date(ano,mes,dia);
            if (ano!=miFecha.getFullYear())
                return false;
        }
        catch(err)
        {
            return false;
        }
    }
    return true;
}

function validarFecha (objeto, formato, conHora, obligatorio)
{
    if (!booleanValidarFecha (objeto, formato, conHora, obligatorio))
    {
        mostrarMensaje (objeto, "Fecha Incorrecta");
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarFechaAlert (objeto, formato, conHora, obligatorio)
{
    if (!booleanValidarFecha (objeto, formato, conHora, obligatorio))
    {
        alert ("Fecha Incorrecta");
        return false;
    }
    return true;
}

function validarFechaYMD (objeto)
{
    var valor=objeto.value;
    var ano=valor.substr (0,4);
    var mes=valor.substr (5,2)-1;
    var dia=valor.substr (8,2);
    try
    {
        var miFecha = new Date(ano,mes,dia) ;
        if (ano!=miFecha.getFullYear())
        {
            mostrarMensaje (objeto, "Fecha Incorrecta");
            return false;
        }
    }
    catch(err)
    {
        mostrarMensaje (objeto, "Fecha Incorrecta");
        return false;
    }
    ocultarMensaje (objeto);
    return true;
}

function validarMensajeDiv2 (objeto, vacio, validacion)
{
    return validarMensajeDiv (objeto, vacio, validacion);

	
}

function validarCampoCero (objeto, vacio, validacion, nombre)
{
    var valor = objeto.value;

    if (vacio||valor.length>0)
    {
        if (validarCadena (valor, validacion))
        { 
            if (valor<=0){
                var mensaje="El valor del campo "+nombre+" debe ser mayor a CERO";
                alert (mensaje);
                return false;
            }
        }
    }
    return true;
}

function validarCampoAlertConsult (objeto, vacio, validacion, nombre)
{
    var valor = objeto.value;
    if (validacion=="fechaSinHora")
        return validarFechaAlert(objeto,g_fechaYMD,false,vacio);
    if (validacion=="fechaConHora")
        return validarFechaAlert(objeto,g_fechaYMD,true,vacio);
    if (validacion=="cedula")
        return validarCedulaAlert(objeto, vacio, nombre);
    if (vacio||valor.length>0)
    {
        if (vacio)
            if (valor.length==0)
            {
                var mensaje="El campo "+nombre+" no puede estar vacio";
                alert (mensaje);
                return false;
            }

        if (!validarCadena (valor, validacion))
        {
            var mensaje="El valor del campo "+nombre+" es incorrecto";
            alert (mensaje);
            return false;
        }
    }
    return true;
}







