function ObtenerFechaCalendarioPopUp(CtrlName) {
    /****************************************************
    Obtiene la fecha en de la página CalendarioPopUp.aspx
    *****************************************************/

    ChildWindow = window.open('../CalendarioPopUp.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName, "PopUpCalendar", "width=200,height=200,top=200,left=200,scrollbars=no,status=no,resizable=no,menubar=no,titlebar=no,toolbar=no");
    ChildWindow.focus()
}

function ObtenerFechaCalendarioPopUpCarpetaEntregada(CtrlName) {
    /****************************************************
    Obtiene la fecha en de la página CalendarioPopUp.aspx
    *****************************************************/

    if (document.getElementById('ctl00_ContentPlaceHolder1_chkEntregado').checked) {

        ChildWindow = window.open('../CalendarioPopUp.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName, "PopUpCalendar", "width=200,height=200,top=200,left=200,scrollbars=no,status=no,resizable=no,menubar=no,titlebar=no,toolbar=no");
        ChildWindow.focus()

    } else {

        alert('Debe marcar el check de entregado antes de introducir la hora');

    }

}



function ObtenerFechaCalendarioPopUpParametrizado(CtrlName, Date) {
    /****************************************************
    Obtiene la fecha en de la página CalendarioPopUp.aspx
    *****************************************************/

    ChildWindow = window.open('../CalendarioPopUp.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName + '&Date=' + Date, "PopUpCalendar", "width=200,height=200,top=200,left=200,scrollbars=no,status=no,resizable=no,menubar=no,titlebar=no,toolbar=no");
    ChildWindow.focus()
}

function ObtenerFechaCalendarioPopUpModal(CtrlName, Date) {
    /****************************************************
    Obtiene la fecha en de la página CalendarioPopUp.aspx
    *****************************************************/

    var resultado;

    if (window.showModalDialog) {
        resultado = window.showModalDialog('../CalendarioFrame.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName + '&Date=' + Date, 'PopUpCalendar', "dialogWidth:185px;dialogHeight:200px;dialogTop:200px;dialogLeft:200px;scroll:no;status:no;resizable:no;Help:no;");
    }
    else {
        window.open('../CalendarioPopUp.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName + '&Date=' + Date, 'PopUpCalendar', "width=185,height=200,top=200,left=200,toolbars=no,scrollbars=no,status=no,resizable=no,modal=yes");
    }

    if (resultado == undefined) {
        resultado = Date;
    }
    return resultado;
}
function CheckWindow() {
    ChildWindow.close();
}

//    '************************************************************************
//    ' Nombre:        ComprobarLetraValida
//    '                Ediez - 26/04/2007
//    '                RArana - 07/04/2008  
//    '
//    '
//    ' Finalidad:     La función comprobará si la letra del DNI es correcta.
//    ' Entradas:
//    '  source: CustomValidator que relaiza la llamada.
//    '
//    ' arguments:  DNI del que se quiere llevar a cabo la comprobación
//    '
//    ' Resultados: Si la letra es válida o no.
//    '
//    '************************************************************************
function ComprobarLetraValida(source, arguments) {
    if (!arguments.Value) {
        arguments.IsValid = false;
        return;
    }
    var DNI = arguments.Value.toUpperCase();
    var NumDNI = "";
    var letraDNI = "";
    var letras = "TRWAGMYFPDXBNJZSQVHLCKE";

    //es necesario volver a llevar a cabo esta comprobación aquí, dado que todos los controles Validator se 
    // ejecutan independiendetemente del fallo de uno de ellos.
    if (/([A-Z][0-9]?|[0-9])(\d{7}[A-Z])/.test(DNI.toString())) {
        //quito las letras de la cadena que ya es válida
        var startIndex = 0;

        if ((DNI.charAt(0) == "X") || (DNI.charAt(0) == "Y") ||
           (DNI.charAt(0) == "Z")) {
            arguments.IsValid = true;
            return;
           }
        

        if (validarTexto(DNI.charAt(0))) startIndex = 1;

        letraDNI = DNI.charAt(DNI.length - 1);
        NumDNI = DNI.substring(startIndex, DNI.length - 1);

        var resto = NumDNI % 23;

        if (letraDNI == letras.charAt(resto))
            arguments.IsValid = true;
        else
            arguments.IsValid = false;
    }
}


//    '************************************************************************
//    ' Nombre:        ComprobarDCNumAfiliacion
//    '                Ediez - 27/04/2007
//    '
//    '
//    ' Finalidad:     La función comprobará si el dígito de control del Número de Afiliación es correcto.
//    ' Entradas:
//    '  source: CustomValidator que relaiza la llamada.
//    '
//    ' arguments:  Número de la seguridad Social del que se quiere llevar a cabo la comprobación
//    '
//    ' Resultados: Si el número es válido o no.
//    '
//    '************************************************************************

//Nota: no hay manera de saber si el NAF se trata de uno actual (12 dígitos)o uno antiguo (11 dígitos).
//por lo que se deja a la voluntad del usuario.

function ComprobarDCNumAfiliacion(source, arguments) {
    var NumSegSocial = arguments.Value.toString();
    var numero;
    var DC;

    // Primero deberemos comprobar que el número tiene los dígitos deseados. a pesar de que este control se realiza con un 
    //Regular Expression Validator, es necesario llevarlo a caba aquí también, ya que la no validación por parte de este control 
    // no significa que no vaya a acceder a este código.

    if (/^([0-9])((\d{10})|(\d{11}))$/.test(NumSegSocial)) {
        if (NumSegSocial.length == 11) //se trata de un NAF antiguo (11 dígitos)
        {
            numero = NumSegSocial.substring(0, 9);
            DC = NumSegSocial.substring(9, 11);
        }
        else // Se trata de un nuevo NAF (12 dígitos)
        {
            numero = NumSegSocial.substring(0, 10);
            DC = NumSegSocial.substring(10, 12);
        }

        var resto = numero % 97;

        if (resto == DC)
            arguments.IsValid = true;
        else
            arguments.IsValid = false;
    }
}

//    '************************************************************************
//    ' Nombre:        ComprobarDCNumEmpresa
//    '                Ediez - 30/04/2007
//    '
//    '
//    ' Finalidad:     La función comprobará si el dígito de control del Número de empresa (CCC) es correcto.
//    ' Entradas:
//    '  source: CustomValidator que relaiza la llamada.
//    '
//    ' arguments:  Número de la seguridad Social del que se quiere llevar a cabo la comprobación
//    '
//    ' Resultados: Si el número es válido o no.
//    '
//    '************************************************************************

//Nota: no hay manera de saber si el Número de empresa (CCC) se trata de uno actual (11 dígitos)o uno antiguo (10 dígitos).
//por lo que se deja a la voluntad del usuario.


function ComprobarDCNumEmpresa(source, arguments) {
    var NumSegSocial = arguments.Value.toString();
    var numero;
    var DC;

    // Primero deberemos comprobar que el número tiene los dígitos deseados. a pesar de que este control se realiza con un 
    //Regular Expression Validator, es necesario llevarlo a caba aquí también, ya que la no validación por parte de este control 
    // no significa que no vaya a acceder a este código.

    if (/^([0-9])((\d{9})|(\d{10}))$/.test(NumSegSocial)) {
        if (NumSegSocial.length == 10) //se trata de un CCC antiguo (10 dígitos)
        {
            numero = NumSegSocial.substring(0, 8);
            DC = NumSegSocial.substring(8, 10);
        }
        else // Se trata de un nuevo NAF (11 dígitos)
        {
            numero = NumSegSocial.substring(0, 9);
            DC = NumSegSocial.substring(9, 11);
        }

        var resto = numero % 97;

        if (resto == DC)
            arguments.IsValid = true;
        else
            arguments.IsValid = false;
    }
}

//Valida si la letra pasada es una cadena
function validarTexto(valor) {
    exp_reg = /[a-zA-Z]/;
    if (exp_reg.test(valor) == true) {
        return (true)
    } else {
        return (false);
    }
}


//    '************************************************************************
//    ' Nombre:        ValidarCIF
//    '                Ediez - 03/05/2007
//    '
//    '
//    ' Finalidad:     La función comprobará si el dígito de control del CIF (Código de Indentificación Fiscal) es correcto.
//    ' Entradas:
//    '     source: CustomValidator que relaiza la llamada.
//    '
//    '     arguments:  CIF del que se quiere llevar a cabo la comprobación
//    '
//    ' Resultados: Si el número es válido o no.
//    '
//    '************************************************************************

function ValidarCIF(source, arguments) {
    var CIF = arguments.Value.toString();
    var v1 = new Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9);
    var temp = 0;

    // Primero deberemos comprobar que el número tiene los dígitos deseados. A pesar de que este control se realiza con un 
    //Regular Expression Validator, es necesario llevarlo a caba aquí también, ya que la no validación por parte de este control 
    // no significa que no vaya a acceder a este código.

    if (/^([ABCDEFGHKLMNPQS,abcdefghklmnpqs])((\d{8})|(\d{7}[A-Z,a-z]))$/.test(CIF)) {
        for (i = 2; i <= 6; i += 2) {
            temp = temp + v1[parseInt(CIF.substr(i - 1, 1))];
            temp = temp + parseInt(CIF.substr(i, 1));
        }

        temp = temp + v1[parseInt(CIF.substr(7, 1))];
        temp = (10 - (temp % 10));

        if (temp == 10) {
            if (CIF.substr(8, 1) == 'J' || CIF.substr(8, 1) == '0') //"El dígito de control es: J ó 0" 
                arguments.IsValid = true;
            else
                arguments.IsValid = false;

            if (validarTexto(CIF.substr(8, 1))) arguments.IsValid = true;
        }
        else {
            if (CIF.substr(8, 1) == temp)
                arguments.IsValid = true;
            else
                arguments.IsValid = false;
        }
    }
}
