
function codificarConsulta(consulta){
    consulta = consulta.replace('%', '%25');
    consulta = consulta.replace('+', '%2B');
    consulta = consulta.replace('\"', '\\\"');

    return consulta;
}

function dosDecimales(num){
    if (esNumerico(num,true,true)) {
        dnum = Math.round(num * 100)/100;
        twoDPString = dnum + "";
        if (twoDPString.indexOf(".") == -1) {
            twoDPString += ".00"
            }
        if (twoDPString.indexOf(".") == twoDPString.length-2) {
            twoDPString += "0"
            }
        return twoDPString;
    } else {
        return "0.00"
    }
}


function esNumerico(sText,decimals,negatives) {
    var isNumber=true;
    var numDecimals = 0;
    var validChars = "0123456789";
    if (decimals)  validChars += ".";
    if (negatives) validChars += "-";
    var thisChar;
    for (i = 0; i < sText.length && isNumber == true; i++) {
        thisChar = sText.charAt(i);
        if (negatives && thisChar == "-" && i > 0) isNumber = false;
        if (decimals && thisChar == "."){
            numDecimals = numDecimals + 1;
            if (i==0 || i == sText.length-1) isNumber = false;
            if (numDecimals > 1) isNumber = false;
        }
        if (validChars.indexOf(thisChar) == -1) isNumber = false;
    }
    return isNumber;
}

function validarEmail(address) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   
    if(reg.test(address) == false) {
        return false;
    } else {
        return true;
    }
}

// Función que valida un número de afiliación de la seguridad social
function validarNumeroSeguridadSocial(nss){
    return true; // Deshabilitado por orden de Miguel el 25/01/2010

    var a = nss.substring(0, 2);
    var b = nss.substring(2, nss.length - 2);
    var c = nss.substring(nss.length - 2, nss.length);
    var aux;
    var num = 10000000;

    if(nss.length == 11){
        num = 1000000;
    }

    // se quitan los ceros a la izquierda
    if(c.charAt(0) == '0'){
        c = c.substring(1);
    }

    while(b.charAt(0) == '0'){
        b = b.substring(1);
    }

    if(parseInt(b) < num){
        aux = ""+(parseInt(b)+(parseInt(a)*num));
    } else {
        aux = a + b;
    }

    aux = ""+(parseInt(aux)%97);

    if(parseInt(aux) == parseInt(c)) return true;
    else{
        alert("Error: El NUMERO DE LA SEGURIDAD SOCIAL introducido es incorrecto.");
        return false;
    }
}




// Función que valida una tarjeta de crédito
function validarTarjeta(campo)
{
    if( campo == '' )
    {
        alert("Por favor, introduzca los datos de su tarjeta bancaria.");
        return false;
    }
    else
    {
        //Limpiamos el número de tarjeta  de posibles espacios en blanco...
        var expReg = /W/gi;
        var numero = campo.replace(expReg, "");

        //Chequeamos que el numero entrado tenga formato numérico...
        if (isNaN(numero)) {
            alert("El número de la tarjeta de crédito no tiene formato numérico.");
            //campo.focus();
            return false;
        }

        //Chequeamos que el numero tenga 16 o 18 dígitos...
        /*if ((numero.length!=16) && (numero.length!=18)) {
alert("El número de dígitos en la tarjeta de crédito es incorrecto.");
campo.focus();
return false;
}*/

        var suma = 0;
        for (i1 = numero.length; i1 > 0; i1--) {

            //Si la posición es impar
            if (i1 % 2 == 1) {
                var doble = "" + (parseInt(numero.substring(i1 - 1, i1)) * 2);

                //Si el doble tiene más dos cifras (o sea es mayor que 9)
                if (doble.length == 2) {
                    doble = parseInt(doble.substring(0,1)) + parseInt(doble.substring(1,2));
                }
                suma += parseInt(doble);
            }
            //Si la posición es par
            else {
                suma += parseInt(numero.substring(i1 - 1, i1));
            }
        }

        //Si la suma total no es divisible por 10 entonces el número no es válido
        if (suma % 10 != 0) {
            alert("El número de la tarjeta de crédito no es válido.");
            //campo.focus();
            return false;
        }

        //En cualquier otro caso el número es válido
        return true;
    }
}


// Funciones necesarias para validar el ccc
function obtenerDigito(valor){
    valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
    control = 0;
    for (w=0; w<=9; w++)
        control += parseInt(valor.charAt(w)) * valores[w];
    control = 11 - (control % 11);
    if (control == 11) control = 0;
    else if (control == 10) control = 1;
    return control;
}


function numerico(valor){
    cad = valor.toString();
    for (var q=0; q<cad.length; q++) {
        var caracter = cad.charAt(q);
        if (caracter<"0" || caracter>"9")
            return false;
    }
    return true;
}

// Validar un código de cuenta de cliente
function validarccc(c) {
    var banco = c.substr( 0, 4 );
    //alert(banco);
    var sucursal = c.substr( 4, 4 );
    //alert(sucursal);
    var dc = c.substr( 8, 2 );
    //alert(dc);
    var cuenta = c.substr( 10, 10 );
    //alert(cuenta);

    if (banco == ""  || sucursal == "" ||
        dc == "" || cuenta == "")
        {
        alert("Por favor, introduzca los datos de su cuenta");
        return false;
    }
    else {
        if (banco.length != 4 || sucursal.length != 4 ||
            dc.length != 2 || cuenta.length != 10)
            {
            alert("Por favor, introduzca correctamente los datos de su cuenta;"
                + " no están completos");
            return false;
        }
        else {
            if (!numerico(banco) || !numerico(sucursal) ||
                !numerico(dc) || !numerico(cuenta))
                {
                alert("Por favor, introduzca correctamente los datos de su "
                    + "cuenta; no son numericos");
                return false;
            }
            else {
                if (!(obtenerDigito("00" + banco + sucursal) ==
                    parseInt(dc.charAt(0))) ||
                !(obtenerDigito(cuenta) ==
                    parseInt(dc.charAt(1))))
                    {
                    alert("Los dígitos de control no se corresponden con los demás"
                        + " números de la cuenta");
                    return false;
                }
                else
                    return true;
            }
        }
    }
}


function nif(dni, devolucion)
{
    numero = dni.substr(0, dni.length - 1);
    let = dni.substr(dni.length - 1, 1);
    numero = numero % 23;
    letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
    letra = letra.substring(numero, numero + 1);

    if (letra != let)
    {
        alert('El DNI no es correcto');
        devolucion = false;
    }

    return devolucion;
}

function nie(a, devolucion)
{
    /*numero = dni.substr(1, dni.length - 2);
    let = dni.substr(dni.length - 1, 1);
    numero = numero % 23;
    letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
    letra = letra.substring(numero, numero + 1);

    if (letra != let)
    {
        alert('El CIF o Documento de extranjeria no es correcto');
        devolucion = false;
    }

    return devolucion;*/ //DEPRECATED

    var temp=a.toUpperCase();
    var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
    if (temp!==""){

        //comprobacion de NIEs
        //T
        if (/^[T]{1}/.test(temp))
        {
            return devolucion;
        }

        //XYZ
        if (/^[XYZ]{1}/.test(temp) && temp.length == 9)
        {

            /*temp = temp.replace('X','0');
            temp = temp.replace('Y','1');
            temp = temp.replace('Z','2');*/

            var letra = temp.charAt(0);
            letra =   letra.replace('X','0');
            letra =   letra.replace('Y','1');
            letra =   letra.replace('Z','2');

            temp = letra + temp.substring(1, temp.length);

            var pos = temp.substring(0, 8) % 23;

            if (temp.charAt(8) == cadenadni.substring(pos, pos + 1))
            {
                return devolucion;
            } else {
                alert('El CIF o Documento de extranjeria no es correcto');
                devolucion = false;
            }
        }
    }
    alert('El CIF o Documento de extranjeria no es correcto');
    devolucion = false;
    return devolucion;
}

function cif(F, devolucion)
{
    var v1 = new Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9);
    var temp = 0;
    var temp1;

    for (q = 2; q <= 6; q += 2 )
    {
        temp = temp + v1[parseInt(F.substr(q - 1, 1))];
        temp = temp + parseInt(F.substr(q, 1));
    }

    temp = temp + v1[parseInt(F.substr(7, 1)) ];

    temp = (10 - ( temp % 10));

    if (temp == 10)
    {
        if (F.charAt(8) != 0 && F.charAt(8) != 'J')
        {
            alert('El CIF no es correcto');
            devolucion = false;
        }
    }

    else
    {
        if (F.charAt(8) != temp)
        {
            alert('El CIF no es correcto');
            devolucion = false;
        }
    }

    return devolucion;
}

function IsNumeric(sText)
{
    if(sText.length == 0){
        return false;
    }
    
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    var w;

    for (w = 0; w < sText.length && IsNumber == true; w++)
    {
        Char = sText.charAt(w);

        if (ValidChars.indexOf(Char) == -1)
        {
            IsNumber = false;
        }
    }

    return IsNumber;
}


function IsReal(sTexto)
{
    var Valid = "0123456789";
    var Real = true;
    var Chara;
    var wy;
    var nume = 0;

    for (ir = 0; ir < sTexto.length; ir++)  // contamos el número de puntos que tiene
    {

        if (sTexto.charAt(ir) == ".") nume++;
    }
    if (nume > 1) Real = false;  // si tiene más de un punto no es real
    else      // sino validamos
    {
        for (wy = 0; wy < sTexto.length && Real == true; wy++)
        {
            Chara = sTexto.charAt(wy);

            if (Chara != ".")
            {
                if (Valid.indexOf(Chara) == -1)
                {
                    Real = false;
                }
            }
        }
    }

    return Real;
}


function IsDate(Cadena)
{
    var EsFecha = true;
    var Fecha = new String(Cadena);	// Crea un string
    //alert("FECHA PASADA = "+Fecha);
    //var RealFecha= new Date();	// Para sacar la fecha de hoy
    // Cadena Año
    var Ano = new String(Fecha.substring(Fecha.lastIndexOf("/") + 1, Fecha.length));
    // Cadena Mes
    var Mes = new String(Fecha.substring(Fecha.indexOf("/") + 1, Fecha.lastIndexOf("/")));
    // Cadena Día
    var Dia = new String(Fecha.substring(0, Fecha.indexOf("/")));

    // Valido el año
    if (isNaN(Ano) || Ano.length < 4 || parseFloat(Ano) < 1900)
    {
        alert('Año inválido');
        EsFecha = false;
        return EsFecha;
    }

    // Valido el Mes
    //alert("mes = "+Mes);
    if (Mes == '' || isNaN(Mes) || parseFloat(Mes) < 1 || parseFloat(Mes) > 12)
    {
        alert('Mes inválido');
        EsFecha = false;
        return EsFecha;
    }

    // Valido el Dia
    //alert("dia = "+Dia);
    if (Dia == '' || isNaN(Dia) || parseFloat(Dia) < 1 || parseFloat(Dia) > 31)
    {
        alert('Día inválido');
        EsFecha = false;
        return EsFecha;
    }

    if (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11 || Mes == 2)
    {
        if (Mes == 2 && Dia > 28 || Dia > 30)
        {

            //Certificar si es bisiestro
            var bisiestro = false;
            if((Ano % 4 == 0) && ((Ano % 100 != 0) || (Ano % 400 == 0))){
                bisiestro = true;
            }
            if(!((Dia == 29) && (Mes == 2) && bisiestro)){
                alert('Día inválido');
                EsFecha = false;
            }
            return EsFecha;
        }
    }

    return EsFecha;
}

function trim(s)
{
    while (s.length > 0 && (s[0] == ' ' || s[0] == '\n')) s = s.substring(1, s.length);

    while (s.length > 0 && (s[s.length - 1] == ' ' || s[s.length - 1] == '\n')) s = s.substring(0, s.length - 1);

    return s;
}

function limpia(t)
{
    var tt = t;

    var rem = new RegExp(",", 'gi');
    tt = tt.replace(rem, '');

    //    var rem = new RegExp("-",'gi');
    //    tt = tt.replace(rem, '');

    var rem = new RegExp("_", 'gi');
    tt = tt.replace(rem, '');

    //    var rem = new RegExp("/",'gi');
    //    tt = tt.replace(rem, '');

    var rem = new RegExp("´", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("`", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("^", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("¡", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("!", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("\"", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("<", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp(">", 'gi');
    tt = tt.replace(rem, '');

    var rem = new RegExp("\=", 'gi');
    tt = tt.replace(rem, '');

    tt.replace(/^s+|s+$/g,'');

    return tt;
}



//----------------------------------------------\
//COMIENZO DE LAS VALIDACIONES DE FORMULARIOS   |
//----------------------------------------------/

function validar(formulario)
{
    var item;
    var devolucion = true;
    var aux;

    for (i = 0; ((i < formulario.length) && (devolucion == true)); i++)
    {

        item = formulario.elements[i];

        if (item.id.charAt(0) == '*')
        {
            if (item.type == 'text')
            {
                //aux = limpia(item.value);
                //item.value = aux;

                // se valida el número de la seguridad social
                if (item.id.charAt(1) == 'S')
                {
                    if (item.value.length != 11 && item.value.length != 12)
                    {
                        alert("El campo " + item.title.toUpperCase() + " no tiene la longitud correcta. Debe tener 11 o 12 números.");
                        item.focus();
                        devolucion = false;
                    }
                    else if(!IsNumeric(item.value))
                    {
                        alert("El campo " + item.title.toUpperCase() + " tiene que ser un número.");
                        item.focus();
                        devolucion = false;
                    } else {
                        devolucion = validarNumeroSeguridadSocial(item.value);
                        item.focus();
                    }
                }

                /* Validar el nif */
                else if (item.id.charAt(1) == 'N')
                {
                    if (item.value.length != 9)
                    {
                        alert("El campo NIF no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else
                    {
                        if (item.value == 'GRANCUENT' && formulario.name == 'registro'){
                            devolucion = true;
                        } else {
                            //item.value = item.value.toUpperCase();
                            if(IsNumeric(item.value.charAt(0))) devolucion = nif(item.value, devolucion);
                            else devolucion = nie(item.value, devolucion);
                            item.focus();
                        }
                    }
                }

                /* Validar el CIF */
                else if (item.id.charAt(1) == 'C' )
                {
                    if ( item.id.charAt(2) == 'C')
                    {
                        devolucion = validarccc( item.value );
                    }
                    else if (item.value.length != 9)
                    {
                        alert("El campo CIF no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else 
                    {
                        if (item.value == 'GRANCUENT' && formulario.name == 'registro'){
                            devolucion = true;
                        } else {
                            //item.value = item.value.toUpperCase();
                            devolucion = cif(item.value, devolucion);
                            item.focus();
                        }
                    }
                }

                /* Validar el documento de extranjería */
                else if (item.id.charAt(1) == 'D' )
                {
                    if (item.value.length != 9)
                    {
                        alert("Documento de Extrangería no tiene el tamaño adecuado: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else
                    {
                        if (item.value == 'GRANCUENT' && formulario.name == 'registro'){
                            devolucion = true;
                        } else {
                            //item.value = item.value.toUpperCase();
                            devolucion = nie(item.value, devolucion);
                            item.focus();
                        }
                    }
                }

                /* Validar longitud mínima 6 caracteres */
                else if (item.id.charAt(1) == 'L' )
                {
                    if (item.value.length < 6)
                    {
                        alert("El campo " + item.title.toUpperCase() + " debe ser de al menos 6 caracteres.");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validar el numero de trabajadores */
                else if (item.id.charAt(1) == 'W')
                {
                    if (item.value.length == 0)
                    {
                        alert("El campo Número de trabajadores está vacío: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else
                    {
                        if (!IsNumeric(item.value))
                        {
                            alert("Por favor introduzca un número de trabajadores correcto: " + item.title);
                            item.focus();
                            devolucion = false;
                        }

                        else if (parseInt(item.value) < 0)
                        {
                            alert("Por favor introduzca un número de trabajadores correcto: " + item.title);
                            item.focus();
                            devolucion = false;
                        }
                    }
                }

                else if (item.id.charAt(1) == 'T')
                {
                    /* Validar el numero de tarjeta de crédito */
                    if( item.id.charAt(2) == 'C' )
                    {
                        devolucion = validarTarjeta( item.value );
                        if( !devolucion ) item.focus();
                    }
                    /* Validar el numero de telefono y fax */
                    else if (item.value.length != 9)
                    {
                        alert("Teléfono/Fax no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(0) != '9' && item.value.charAt(0) != '8' && item.value.charAt(0) != '6')
                    {
                        alert("Está introduciendo un numero de Telefono/Fax incorrecto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (!IsNumeric(item.value))
                    {
                        alert("Por favor introduzca un número de Teléfono/Fax correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validar el móvil */
                else if (item.id.charAt(1) == 'M')
                {
                    if (item.value.length != 9)
                    {
                        alert("El Móvil no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(0) != '9' && item.value.charAt(0) != '8' && item.value.charAt(0) != '6')
                    {
                        alert("Está introduciendo un numero de Móvil incorrecto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    if (!IsNumeric(item.value))
                    {
                        alert("Por favor introduzca un número de Móvil correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos el correo electronico */
                else if (item.id.charAt(1) == 'E')
                {
                    if(!validarEmail(item.value)){
                        alert('Dirección de e-mail inválida.');
                        item.focus();
                        devolucion = false;
                    }
                /*if (item.value.length == 0)
                    {
                        alert("Correo electrónico vacío: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.indexOf('@') == -1)
                    {
                        alert("Correo electrónico no válido: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(item.value.indexOf('@') + 1) == "" || item.value.charAt(item.value.indexOf('@') - 1) == "")
                    {
                        alert("Correo electrónico no válido: " + item.title);
                        item.focus();
                        devolucion = false;
                    }*/
                }

                /* Validamos el codigo postal */
                else if (item.id.charAt(1) == 'P')
                {
                    if (item.value.length != 5)
                    {
                        alert("La longitud del Código Postal no es la correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (!IsNumeric(item.value))
                    {
                        alert("Código Postal no es de tipo numérico");
                        item.focus();
                        devolucion = false;
                    }
                    else if (item.value > 52006)
                    {
                        alert("Código Postal no es válido");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos campo numérico */
                else if (item.id.charAt(1) == '9')
                {
                    devolucion = true;

                    if (!IsNumeric(item.value) || item.value.length == 0)
                    {
                        alert("el valor del campo " + item.title + " debe ser numérico");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* --------------- en pruebas ----------------- */

                /* Validamos campo real */
                else if (item.id.charAt(1) == 'R')
                {
                    // devolucion = true;

                    if (!IsReal(item.value) || item.value.length == 0)
                    {
                        alert("el campo " + item.title + " debe ser numérico con decimales separados por un punto");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos email */
                else if (item.id.charAt(1) == '@')
                {
                    // devolucion = true;
                    if(!validarEmail(item.value)){
                        alert('Dirección de e-mail inválida.');
                        item.focus();
                        devolucion = false;
                    }

                /*if ((item.value.lastIndexOf('@') <= 0)||(item.value.lastIndexOf('.')<=1)||(item.value.charAt(item.value.lastIndexOf('.')+1)=='')||(item.value.charAt(item.value.lastIndexOf('.')+1)==' ')||(item.value.charAt(item.value.lastIndexOf('@')+1)==' ')||(item.value.charAt(item.value.lastIndexOf('@')+1)=='')||(item.value.charAt(item.value.lastIndexOf('@')+1)=='.'))
                    {
                        alert("el campo " + item.title + " debe ser un email valido");
                        item.focus();
                        devolucion = false;
                    }*/
                }


                /* --------------- fin en pruebas ----------------- */

                /* Validamos campo fecha */
                else if (item.id.charAt(1) == 'F')
                {
                    devolucion = true;

                    if (item.id.charAt(2) == 'C')
                    {
                        if (item.id.charAt(3) == 'M')
                        {
                            if( item.value == '' )
                            {
                                alert("Por favor, introduzca el mes de la fecha de caducidad de la tarjeta.");
                                return false;
                            }
                            else if( !IsNumeric( item.value ) )
                            {
                                alert("El mes de la fecha de caducidad de la tarjeta no es numérico.");
                                return false;
                            }
                            else if( parseInt(item.value) < 1 || parseInt(item.value) > 12 )
                            {
                                alert("El mes de la fecha de caducidad de la tarjeta no es válido.");
                                return false;
                            }
                        }
                        else if (item.id.charAt(3) == 'A')
                        {
                            if( item.value == '' )
                            {
                                alert("Por favor, introduzca el año de la fecha de caducidad de la tarjeta.");
                                return false;
                            }
                            else if( !IsNumeric( item.value ) )
                            {
                                alert("El año de la fecha de caducidad de la tarjeta no es numérico.");
                                return false;
                            }
                            else
                            {
                                var fechaActual = new Date();
                                var year = fechaActual.getFullYear();
                                if( parseInt( item.value ) < year )
                                {
                                    alert("El año de la fecha de caducidad de la tarjeta no es válido.");
                                    return false;
                                }
                                else if( parseInt( item.value ) == year )
                                {
                                    var mes = fechaActual.getMonth() + 1;
                                    if( document.forms[0].fecha_cad_mes.value <= parseInt( mes ) )
                                    {
                                        alert("La fecha de caducidad no es válida.");
                                        return false;
                                    }
                                }
                            }
                        }
                    }
                    else if (!IsDate(item.value))
                    {
                        alert("el campo " + item.title + " debe ser una fecha válida: DD/MM/AAAA");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos el segundo apellido */
                else if (item.id.charAt(1) == 'H')

                {
                    devolucion = true;

                    if (item.value.length == 0)
                    {
                        alert("El segundo apellido es obligatorio. Si no tiene segundo apellido, introduzca un punto.");
                        item.focus();
                        devolucion = false;
                    }
                }

                else if (item.value.length == 0)
                {
                    alert ('El campo ' + item.title + ' está vacío');
                    devolucion = false;
                }
            }

            else if (item.type == 'password')
            {
                if (item.id == '*')
                {
                    if (item.value.length < 6)
                    {
                        alert('La contraseña debe ser de al menos 6 caracteres');
                        devolucion = false;
                    }
                }
            }

            else if (item.type == 'select-one')
            {
                if (item.id == '*')
                {
                    if (item.value == '')
                    {
                        alert('Por favor, elija una opción del ' + item.title);
                        devolucion = false;
                    }
                }
            }

            else if (item.type == 'hidden')
            {
                if (item.id == '*')
                {
                    if (item.value == '')
                    {
                        alert('Por favor, no se han rellenado los datos de ' + item.title);
                        devolucion = false;
                    }
                }
            }

            else if (item.type == 'textarea')
            {
                if (item.id == '*')
                {
                    if (item.value == '')
                    {
                        alert('Por favor, no se han rellenado los datos de ' + item.title);
                        devolucion = false;
                    }
                }
            }

            else
            {
                alert('No es un tipo conocido de campo para validar' + item.type);
                devolucion = false;
            }
        }

        //-----------------------------------------------------------\
        // VALIDAMOS LOS QUE NO TIENEN EN ID UN * Y NO ESTAN VACIOS  |
        //---------------------------------------------------------- /
        else if (item.id.charAt(0) != '' && item.value.length > 0)
        {
            // alert("no tiene *");

            if (item.type == 'text')
            {
                // se valida el número de la seguridad social
                if (item.id.charAt(0) == 'S')
                {
                    if (item.value.length != 11 && item.value.length != 12)
                    {
                        alert("El campo " + item.title.toUpperCase() + " no tiene la longitud correcta. Debe tener 11 o 12 números.");
                        item.focus();
                        devolucion = false;
                    }
                    else if(!IsNumeric(item.value))
                    {
                        alert("El campo " + item.title.toUpperCase() + " tiene que ser un número.");
                        item.focus();
                        devolucion = false;
                    } else {
                        devolucion = validarNumeroSeguridadSocial(item.value);
                        item.focus();
                    }
                }
                /* Validar el nif */

                else if (item.id.charAt(0) == 'N')
                {
                    if (item.value.length != 9)
                    {
                        alert("El campo NIF no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else
                    {
                        item.value = item.value.toUpperCase();
                        if(IsNumeric(item.value.charAt(0))) devolucion = nif(item.value, devolucion);
                        else devolucion = nie(item.value, devolucion);
                        item.focus();
                    }
                }

                /* Validar el CIF */
                else if (item.id.charAt(0) == 'C' )
                {
                    if ( item.id.charAt(1) == 'C')
                    {
                        devolucion = validarccc( item.value );
                    }
                    else if (item.value.length != 9)
                    {
                        alert("El campo CIF no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                    else
                    {
                        item.value = item.value.toUpperCase();
                        devolucion = cif(item.value, devolucion);
                        item.focus();
                    }
                }

                /* Validamos campo numérico */
                else if (item.id.charAt(0) == '9')
                {
                    devolucion = true;

                    if (!IsNumeric(item.value) || item.value.length == 0)
                    {
                        alert("el valor del campo " + item.title + " debe ser numérico");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* --------------- en pruebas ----------------- */

                /* Validamos campo real */
                else if (item.id.charAt(0) == 'R')
                {
                    devolucion = true;

                    if (!IsReal(item.value))
                    {
                        alert("el campo " + item.title + " debe ser numérico con decimales separados por un punto");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos email */
                else if (item.id.charAt(0) == '@')
                {
                    // devolucion = true;
                    if(!validarEmail(item.value)){
                        alert('Dirección de e-mail inválida.');
                        item.focus();
                        devolucion = false;
                    }

                /*if ((item.value.lastIndexOf('@') <= 0)||(item.value.lastIndexOf('.')<=1)||(item.value.charAt(item.value.lastIndexOf('.')+1)=='')||(item.value.charAt(item.value.lastIndexOf('.')+1)==' ')||(item.value.charAt(item.value.lastIndexOf('@')+1)==' ')||(item.value.charAt(item.value.lastIndexOf('@')+1)=='')||(item.value.charAt(item.value.lastIndexOf('@')+1)=='.'))
                    {
                        alert("el campo " + item.title + " debe ser un email valido");
                        item.focus();
                        devolucion = false;
                    }*/
                }

                /* --------------- fin en pruebas ----------------- */

                /* Validamos campo fecha */
                else if (item.id.charAt(0) == 'F')
                {
                    devolucion = true;

                    if (!IsDate(item.value))
                    {
                        alert("el campo " + item.title + " debe ser una fecha válida: DD/MM/AAAA");
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validar el documento de extranjería */
                else if (item.id.charAt(0) == 'D' )
                {
                    if (item.value.length != 9)
                    {
                        alert("Documento de Extrangería no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else
                    {
                        item.value = item.value.toUpperCase();
                        devolucion = nie(item.value, devolucion);
                        item.focus();
                    }
                }

                /* Validar el numero de trabajadores */
                else if (item.id.charAt(0) == 'W')
                {
                    if (!IsNumeric(item.value))
                    {
                        alert("Por favor introduzca un número de trabajadores correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (parseInt(item.value) < 0)
                    {
                        alert("Por favor introduzca un número de trabajadores correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validar el numero de telefono y fax */
                else if (item.id.charAt(0) == 'T')
                {
                    if (item.value.length != 9)
                    {
                        alert("Teléfono/Fax no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(0) != '9' && item.value.charAt(0) != '8' && item.value.charAt(0) != '6')
                    {
                        alert("Está introduciendo un numero de Telefono/Fax incorrecto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    if (!IsNumeric(item.value))
                    {
                        alert("Por favor introduzca un número de Teléfono/Fax correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validar el móvil */
                else if (item.id.charAt(0) == 'M')
                {
                    if (item.value.length != 9)
                    {
                        alert("El Móvil no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(0) != '9' && item.value.charAt(0) != '8' && item.value.charAt(0) != '6')
                    {
                        alert("Está introduciendo un numero de Móvil incorrecto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    if (!IsNumeric(item.value))
                    {
                        alert("Por favor introduzca un número de Móvil correcto: " + item.title);
                        item.focus();
                        devolucion = false;
                    }
                }

                /* Validamos el correo electronico */
                else if (item.id.charAt(0) == 'E')
                {
                    if(!validarEmail(item.value)){
                        alert('Dirección de e-mail inválida.');
                        item.focus();
                        devolucion = false;
                    }

                /*if (item.value.indexOf('@') == -1)
                    {
                        alert("Correo electrónico no válido: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (item.value.charAt(item.value.indexOf('@') + 1) == "" || item.value.charAt(item.value.indexOf('@') - 1) == "")
                    {
                        alert("Correo electrónico no válido: " + item.title);
                        item.focus();
                        devolucion = false;
                    }*/
                }

                /* Validamos el codigo postal */
                else if (item.id.charAt(0) == 'P')
                {
                    if (item.value.length != 5)
                    {
                        alert("El Código Postal no tiene la longitud correcta: " + item.title);
                        item.focus();
                        devolucion = false;
                    }

                    else if (!IsNumeric(item.value))
                    {
                        alert("Código Postal no es de tipo numérico");
                        item.focus();
                        devolucion = false;
                    }
                }
            }
        }
    }

    if (devolucion != false)
    {
        //formulario.submit();
        return devolucion;
    }

}



function comprobarObligatorios(formulario)
{
    var item2;

    for (i = 0; (i < formulario.length); i++)
    {

        item2 = formulario.elements[i];

        if (item2.id.charAt(0) == '*' && item2.value.length == 0)
        {
            alert('El campo ' + item2.title + ' está vacío y es obligatorio.\nPor favor, rellénelo!');
            item2.focus();
            return false;
        }
    }
    return true;
}



/** Funcion que comprueba que solo hay un checkbox marcado por grupo
 * param check checkbox a comprobar si esta marcado
 * param grupo grupo al que pertenece el checkbox
 * param formulario formulario que contiene los checkboxs
 */
function validar_check(formulario, check, grupo)
{
    var item;
    //Compruebo si la casilla está marcada

    if (check.checked == true)
    {
        for (i = 0; i < formulario.length; i++)
        {
            item = formulario.elements[i];

            if (item.type == 'checkbox' && item.id == grupo && item.name != check.name && item.checked == true)
            {
                item.checked = false;
            }
        }
    }
}

/**
 * Función que comprueba si los elementos de un formulario son nulos
 * En caso afirmativo les asigna un valor vacío
 */
function comprobarNull( formulario )
{
    for (i = 0; ((i < formulario.length)); i++)
    {

        item = formulario.elements[i];

        if (item.type == 'text')
        {
            if( item.value == "null" )
            {
                item.value = "";
            }
        }
    }
}



/*************************************************************************************************/
/*                                               CUANTIKA                                        */
/*************************************************************************************************/

/*************************************************************************************************/
function chequearElementosCampoAlertaMensaje(formulario,elemento,campo,alerta,mensaje){
    var chequeados,i,id;
    chequeados =0;
    id="";

    for (i=0;i<=formulario.length;i++){
        obj= document.getElementById(elemento + i);
        if (obj!= null && obj.checked){
            chequeados++;
            id=id +obj.value+',';
        }
    }
    id=id.substring(0,id.length-1);

    obj2= eval('document.' + formulario.name + '.' + campo)

    if(obj2!= null)
        obj2.value=id;


    if (chequeados<1){
        if(alerta)
            alert(mensaje);

        return false;
    }
    else
        return true;
}

function chequearElementosCampoAlertaMensajeMax(formulario,elemento,campo,alerta,mensaje,max, mensajeMax){
    var chequeados,i,id;
    chequeados =0;
    id="";

    for (i=0;i<=formulario.length;i++){
        obj= document.getElementById(elemento + i);
        if (obj!= null && obj.checked){
            chequeados++;
            id=id +obj.value+',';
        }
    }
    id=id.substring(0,id.length-1);

    obj2= eval('document.' + formulario.name + '.' + campo)

    if(obj2!= null)
        obj2.value=id;


    if (chequeados<1){
        if(alerta)
        {
            alert(mensaje);
            return false;
        }
    }
    else if(chequeados > max)
    {
        alert(mensajeMax);
        return false;
    }

    return true;
}

/*************************************************************************************************/
//Función limita a maxlen el total de caracteres incluidos en objetotext (textarea,text..),
//al mismo tiempo que en el control de salida (inputsalida) indicamos el número actual de caracterés que se incluyen
//en el control
function validarLenTextArea(objetotext,maxlen){
    var longitud;

    longitud=objetotext.value.length;
    if (longitud > maxlen){
        longitud=maxlen;
        objetotext.value=objetotext.value.substr(0,maxlen);
        alert('La longitud máxima permitida es '+maxlen+', el resto de caracteres serán ignorados');

    }
}
function Trim(cadena)
{
    return(ltrim(rtrim(cadena)));
}






