var res = true;
var algunovacio = true;
var valor;

var erroremail = "Debes introducir una cuenta e-Mail correcta.<br/>";
var errortexto = "No se permiten los caracteres \"<\" o \">\".<br/>";
var errorpass = "La contraseña debe tener al menos 6 caracteres.<br/>";
var errorconfpass = "La confirmación de la contraseña es incorrecta.<br/>";
var errorcampovacio = "Debes rellenar todos los campos.<br/>"; //preguntar como señalar campos requeridos.
var errorfecha = "La fecha debe tener el formato dd\/mm\/aaaa. Introduce una fecha válida.<br/>";
var errortextonumero = "No se permiten números ni los caracteres \"<\" o \">\". <br/>"; //señalar en qué campos
function validaFecha(year,month,day){
//    var patronfecha = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
//    if (patronfecha.test(fecha) == false) {
//        return false;
//    }
//    else {
//        f = new String();
//        f = fecha;
//        var array = f.split("\/");
//        var day = array[0];
//        var month = array[1];
//        var year = array[2];
        
        if (day == 31 && (month != 1 && month != 3 && month != 5 && month != 7 && month != 8 && month != 10 && month != 12)) {
            return false;
        }
        else 
            if ((day > 28 && month == 2 && year % 4 != 0) || (day > 29 && month == 2 && year % 4 == 0)) {
                return false;
            }
            else {
                return true;
            }
//    }
}

function esFechaVacia(year,month,day){
	if(year == 0 || month == 0 || day == 0){
		return true;
	}else{
		return false;
	}
}

function validaHora(hora){
    var patronhora = /^[0-9]{1,2}$/;
    if (patronhora.test(hora) == false) {
        return false;
    }
    else {
        if (hora > 23 || hora < 0) {
            return false;
        }
        else {
            return true;
        }
    }
}

function validaMinuto(min){
    var patronminuto = /^[0-9]{1,2}$/;
    if (patronhora.test(min) == false) {
        return false;
    }
    else {
        if (min > 59 || min < 0) {
            return false;
        }
        else {
            return true;
        }
    }
}

function validaEmail(email){
    var patronEmail = /^(.+)@(.+)$/;
    if (patronEmail.test(email) == false) {
        return false;
    }
    else {
        return true;
    }
}

function esVacio(cadena){
    var x = new String();
    x = cadena;
    return x.length == 0;
}

function validaPassword(pass){
    var p = new String;
    p = pass;
    if (p.length < 6) {
        return false;
    }
    else {
        return true;
    }
}

function validaConfirmarPassword(pass, confpass){
    var p = new String();
    var c = new String();
    p = pass;
    c = confpass;
    
    return pass == confpass;
}

function validaTexto(texto){
    var x = new String();
    var t = new String();
    x = texto;
    t = texto;
    t = t.replace("<", "");
    t = t.replace(">", "");
    return x.length == t.length;
}

function validaTextoSinNumero(texto){
    var x = new String();
    var t = new String();
    x = texto;
    t = texto;
    t = t.replace("0", "");
    t = t.replace("1", "");
    t = t.replace("2", "");
    t = t.replace("3", "");
    t = t.replace("4", "");
    t = t.replace("5", "");
    t = t.replace("6", "");
    t = t.replace("7", "");
    t = t.replace("8", "");
    t = t.replace("9", "");
    return x.length == t.length;
}


function validarDatos(idCampos, tipos, requeridos, de){
    var i;
    var mensajes = "";
    algunovacio = false;
    res = true;
    
    for (i = 0; i < idCampos.length; i++) {
        valor = document.getElementById(idCampos[i]).value;
        switch (tipos[i]) {
            case "texto":
                if (requeridos[i] && esVacio(valor)) {
                    algunovacio = algunovacio || esVacio(valor);
                }
                if (!validaTexto(valor)) {
                    mensajes += (i + 1) + ".- " + errortexto;
                    res = res && false;
                }
                else {
                    res = res && true;
                }
                if (!validaTexto(valor) || (requeridos[i] && esVacio(valor))) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                }
                break;
            case "textoSinNumeros":
                if (requeridos[i]) {
                    algunovacio = algunovacio || esVacio(valor);
                }
                if (!validaTextoSinNumero(valor) || !validaTexto(valor)) {
                    mensajes += (i + 1) + ".- " + errortextonumero;
                    res = res && false;
                }
                else {
                    res = res && true;
                }
                if ((!validaTexto(valor) || !validaTextoSinNumero(valor)) || (requeridos[i] && esVacio(valor))) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                }
                break;
            case "email":
                if (requeridos[i]) {
                    algunovacio = algunovacio || esVacio(valor);
                }
                if (!validaEmail(valor)) {
                    mensajes += (i + 1) + ".- " + erroremail;
                    res = res && false;
                }
                else {
                    res = res && true;
                }
                if (!validaEmail(valor) || (requeridos[i] && esVacio(valor))) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                }
                break;
            case "fecha":
				year = document.getElementById("year").value;
				month = document.getElementById("month").value;
				day = document.getElementById("day").value;
                if (requeridos[i]) {
                    algunovacio = algunovacio || esFechaVacia(year,month,day);
                }
                if (!validaFecha(year,month,day)) {
                    mensajes += (i + 1) + ".- " + errorfecha;
                    res = res && false;
                }
                else {
                    res = res && true;
                }
                if (!validaFecha(year,month,day) || (requeridos[i] && esFechaVacia(year,month,day))) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                }
                break;
            case "pass":
                var valorpass = valor;
                if (!validaPassword(valor)) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                    mensajes += (i + 1) + ".- " + errorpass;
                    res = res && false;
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                    res = res && true;
                }
                break;
            case "confpass":
                if (!validaConfirmarPassword(valor, valorpass)) {
                    document.getElementById("div_" + idCampos[i]).className = "formcampoerror";
                    mensajes += (i + 1) + ".- " + errorconfpass;
                    res = res && false;
                    ;
                }
                else {
                    document.getElementById("div_" + idCampos[i]).className = "divLabelForm";
                    res = res && true;
                }
                break;
            default:
                res = res && true;
				break;
        }
        //TERMINAR
    }
    if (algunovacio) {
        mensajes += errorcampovacio;
    }
    document.getElementById(de).innerHTML = mensajes;
    return res && !algunovacio;
}



