function enviarFormSolicitud() {
    var f = $('formSolicitud');
    if(validarFormSolicitud()) {
        f.submit();
    }
}

function getProvinciaForm() {
    var f = $('formSolicitud');
    var c = f['provincia_id'];
    if(c) {
        return $(c[0]).visible() ? c[0].value : c[1].value;
    } else {
        return null;
    }
}

function validarFormSolicitud() {
    var f = $('formSolicitud');

    var idPais = f['pais_id'] ? f['pais_id'].value : null;
    var idProvincia = getProvinciaForm();

    if(!f['acepto'].checked) {
        avisarCampoObligatorio(f['acepto'], 'Antes de proseguir debe aceptar las condiciones de uso y la política de privacidad');
        return false;
    }

    var campos = ['nombre', 'apellidos', 'email', 'telefono',
        'direccion', 'cp', 'localidad', 'comunidad_id', 'pais_id',
        'dni', 'fecha_nacimientoDia', 'fecha_nacimientoMes', 'fecha_nacimientoAno', 'nombre_empresa', 'domicilio_empresa',
        'num_empleados', 'tipo_solicitante', 'sector_solicitante_id',
        'nota', 'numero', 'puerta', 'piso', 'movil', 'bloque', 'comentario_centro',
        'nacionalidad', 'horario_llamada'];

    var msjsError = [];
    campos.each(function(c, i) {
        if(f[c]) {
            msjsError[i] = 'Por favor, rellene el campo ' + f[c].title;
        } else {
            msjsError[i] = null;
        }
    });

    if(!comprobarCampos(f, campos, msjsError)) {
        return false;
    }

    if(f['provincia_id']) {
        var campoProvVisible = $(f['provincia_id'][0]).visible() ? 0 : 1;
        if(!idProvincia || idProvincia.blank()) {
            avisarCampoObligatorio($(f['provincia_id'][campoProvVisible]), 'Por favor, rellene el campo provincia');
            return false;
        }
    }

    if(f['sexo'] && (!f['sexo'][0].checked && !f['sexo'][1].checked)) {
        avisarCampoObligatorio(f['sexo'][0], 'Por favor, rellene el campo sexo');
        return false;
    }

    if(f['email']) {
        if(!validarCorreo(f['email'].value)) {
            avisarCampoObligatorio(f['email'], 'El email indicado no es un email correcto.\nPor favor, indique un email válido.');
            return false;
        }
    }

    if(f['dni']) {
        if(!validarDNI()) {
            avisarCampoObligatorio(f['dni'], 'Dni incorrecto, por favor, rellene el campo DNI con un DNI correcto.');
            return false;
        }
    }

    if(!validarTelefonoFijoOMovil()) {
        return false;
    }

    if(f['cp']) {
        if(!validarCP(f['cp'].value, idPais)) {
            avisarCampoObligatorio(f['cp'], 'Código postal incorrecto, por favor, rellene el campo código postal correctamente.');
            return false;
        }
        if(!validarCPProvincia(f['cp'].value, idPais, idProvincia)) {
            avisarCampoObligatorio(f['cp'], 'Código postal no corresponde con la provincia seleccionada.');
            return false;
        }
    }

    campos.concat('texto').each(function(c) {
        if(f[c]) {
            f[c].value = f[c].value.stripTags().split(/[<>]/).join(' ');
        }
    });

    return validarFormSolicitudExternos();
}

function validarDNI() {
    var f = $('formSolicitud');
    var dni = f['dni'].value;
    if(f['nacionalidad']) {
        if(f['nacionalidad'].value == 60) { /* Nacionalidad española */
            if(!validarNIF(dni)) {
                avisarCampoObligatorio(f['dni'], 'DNI incorrecto, por favor, rellene el campo DNI con un DNI correcto (incluyendo la letra).');
                return false;
            }
        } else {
            if(!validarNIE(dni)) {
                avisarCampoObligatorio(f['dni'], 'NIE incorrecto, por favor, rellene el campo NIE con un NIE correcto.');
                return false;
            }
        }
    } else {
        if(!validarNIF(dni) && validarNIE(dni)) {
            avisarCampoObligatorio(f['dni'], 'DNI o NIE incorrecto, por favor, rellene el campo DNI con un DNI correcto (incluyendo la letra) o con un NIE correcto.');
            return false;
        }

    }
    return true;
}

function validarCorreo(direccion) {
    var nombre = '\\w([-_\\.]?\\w)*';
    var dominio = '\\w([-_\\.]?\\w)*';
    var extension = '\\.\\w{2,3}';
    var correo = nombre + '@' + dominio + extension;

    var expresionRegular = new RegExp ('^' + correo + '$');

    return expresionRegular.test (direccion.split(/[\n\t ]/).join(''));
}

function validarNIF(nif) {
    var regExpNif = /^\d{1,8}[A-Za-z]{1}$/;
    if(regExpNif.test(nif)) {
        var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
        var pos = parseInt(nif.substr(0, nif.length-1)) % 23;
        var letraNIF = nif.substring(nif.length - 1).toUpperCase();
        var letraValidacion = letras.substring(pos, pos + 1);

        if(letraNIF == letraValidacion) {
            return true;
        }
    }
    return false;
}

function validarNIE(nie) {
    var regExpNie = /^[Xx]{1}\d{1,8}[A-Za-z]{1}$/;
    if (!regExpNie.test(nie)) {
		  return false;
    } else {
        var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
        var pos = parseInt(nie.substr(1, nie.length - 1)) % 23;
        var letraNIE = nie.substring(nie.length - 1).toUpperCase();
        var letraValidacion = letras.substring(pos, pos + 1);
        if(letraNIE == letraValidacion) {
            return true;
        }
    }
    return false;
}

function validarTelefonoFijoOMovil() {
    var f = $('formSolicitud');
    var idPais = f['pais_id'] ? f['pais_id'].value : null;
    var fijo = f['telefono'] ? f['telefono'].value : null;
    var movil = f['movil'] ? f['movil'].value : null;
    var fijoCorrecto = false;
    var movilCorrecto = false;
    if(fijo && !fijo.blank()) {
        fijoCorrecto = validarTfno(fijo, idPais);
        if(!fijoCorrecto) {
            f['telefono'].value = '';
        }
    }
    if(movil && !movil.blank()) {
        movilCorrecto = validarTfno(movil, idPais);
        if(!movilCorrecto) {
            f['movil'].value = '';
        }
    }

    var validos = fijoCorrecto || movilCorrecto;

    if(!validos) {
        if(fijo && !movil) {
            avisarCampoObligatorio(f['telefono'], 'Por favor, rellene el campo teléfono correctamente.');
        } else if(movil && !fijo) {
            avisarCampoObligatorio(f['telefono'], 'Por favor, rellene el campo móvil correctamente.');
        } else {
            avisarCampoObligatorio(f['telefono'], 'Por favor, rellene el campo teléfono o el campo móvil correctamente.');
        }

    }

    return validos;
}

function validarTfno(tel, idPais) {
    if(idPais == 60) {
        return /^([6|8|9][0-9]{8})$/.test(tel);
    } else {
        return /^([0-9]{5}[0-9]*)$/.test(tel);
    }
}

function validarCP(cp, idPais) {
    if(idPais == 60) {
        return /^(([0-4][0-9])|(5[0-2]))[0-9]{3}$/.test(cp);
    } else {
        return !cp.blank();
    }
}

function validarCPProvincia(cp, idPais, idProvincia) {
    var prov = [ 9, 47, 22, 28, 41, 33, 19, 16, 36, 32, 30, 20, 46, 25,  1, 44, 17, 27, 43,  8, 23, 12, 26, 34, 15, 11,  3, 48, 29, 31, 10,  4,  5, 35, 50,  2, 40, 49,  6, 42, 24, 39, 18, 14, 45, 21, 38,  7, 37, 13, 51, 52]
    if(idPais == 60 && idProvincia) {
       return prov[parseInt(cp.substr(0, 2), 10) - 1] == parseInt(idProvincia, 10);
    } else {
        return true;
    }

}

function isPaisUE(idPais) {
    if(isNaN(idPais)) {
        return false;
    }
    var paisesUE = [3, 13, 20, 30, 145, 40, 51, 58, 59, 60, 62, 66, 67, 72, 81,
                        87, 89, 99, 105, 106, 113, 133, 140, 141, 143, 148, 167];

    return paisesUE.indexOf(parseInt(idPais, 10)) != -1;
}

function cambiarPaisForm() {
    var f = $('formSolicitud');
    var cPais = $(f['pais_id']);
    var cProvincia = $(f['provincia_id']);
    if(cProvincia) {
        var activo = cPais.value == 60 ? 1 : 0;
        var inactivo = cPais.value == 60 ? 0 : 1;

        cProvincia[inactivo].value = '';
        cProvincia[inactivo].disabled = true;
        $(cProvincia[inactivo]).hide();
        cProvincia[activo].value = '';
        cProvincia[activo].disabled = false;
        $(cProvincia[activo]).show();
    }
}

function validarFormSolicitudExternos() {
    return true;
}

Event.observe(window, 'load', function() {
    var f = $('formSolicitud');

    if (f){

    if(f.telefono) {
        Event.observe(f.telefono, 'paste', function(e) {
            e.stop();
        })
    }
    if(f.movil) {
        Event.observe(f.movil, 'paste', function(e) {
            e.stop();
        })
    }
    }
 });

 var _efectoForm = null;
var _efectoCampoForm = null;
function avisarFormulario() {
    var capaForm = $('contenidoForm');
    if(!capaForm) {
        return;
    }
    var campos = capaForm.select('input, select, textarea');
    var color = null;
    try {
        color = $($$('.tit')[0]).getStyle('color');
        if(color.indexOf('rgb') != -1) {
            color = color.replace('rgb', '').replace('(', '').replace(')', '');
            color = color.split(',');
            color = '#' +
                parseInt(color[0]).toColorPart() +
                parseInt(color[1]).toColorPart() +
                parseInt(color[2]).toColorPart();
        }
    } catch(exp) {
        color = '#8EC53F';
    }
 
    if(_efectoForm) {
        _efectoForm.cancel();
    }
 
    _efectoForm = new Effect.Highlight(capaForm, {
            duration: 3,
            startcolor: '#ffff99',
            endcolor: '#ffffff',
            restorecolor: 'transparent',
            afterFinish: function () {
                try {
                    capaForm.setStyle({backgroundColor : 'transparent'});
                } catch(e){}
            }
        });
 
    campos.each(function(e) {
        if(_efectoCampoForm) {
            _efectoCampoForm.cancel();
        }
        _efectoCampoForm = new Effect.Highlight(e, {
                duration: 3,
                startcolor: color,
                keepBackgroundImage: true,
                afterFinish: function () {
                    try {
                        e.setStyle({backgroundColor: ''});
                        e.style.backgroundColor = null;
                        e.focus();
                    } catch(exp){}
                }
            }
        );
        try {
            e.focus();
        } catch(exp) {}
        throw $break;
    });
}
function validar(){
    validarFormSolicitudExternos();
	unirFecha();
    enviarFormSolicitud();
}
 
function validarFormSolicitudExternos() {
    var f = $('formSolicitud');
    return true;
}


function unirFecha(){
	
	var fechaDia = document.getElementById('fecha_nacimientoDia').value;
	var fechaMes = document.getElementById('fecha_nacimientoMes').value;
	var fechaAno = document.getElementById('fecha_nacimientoAno').value;

	var fechaTotal = fechaAno+'-'+fechaMes+'-'+fechaDia;
	document.getElementById('fecha_nacimiento').value = fechaAno+'-'+fechaMes+'-'+fechaDia;

	//alert(document.getElementById('fecha_nacimiento').value);

}


