// Funciones a ejecutar en el submit
var funciones_someter_form = new Array();
function someter_form(form, action) {
    var objForm = document.getElementById(form);
    var res = true;
    var len = funciones_someter_form.length;
    for (someter_form_i=0; someter_form_i<len; someter_form_i++) {
        eval("res = " + funciones_someter_form[someter_form_i] + "('" + form + "')");
        if (!res) {
            break;
        }
    }
    if (res) {
        objForm.submit();
    }
    return res;
}

// Control de validación de campos por JS
var obligatorios = new Array();
var validaciones = new Array();

// Valida que los campos recibidos hayan sido rellenados
function validar_obligatorios() {
    var i;
    var len = obligatorios.length;
    var res = true;
    for (i = 0; i < len; i++) {
        objCampo = document.getElementById('campo' + obligatorios[i]);
        if (!objCampo.value) {
            focoAlert(obligatorios[i]);
            res = false;
            break;
        }
    }
    return res;
}

// Valida que los campos recibidos hayan sido rellenados con los datos correctos
function validar_campos() {
    var i;
    var len = validaciones.length;
    var res = true;
    for (i=0; i < len; i++) {
        eval('res = ' + validaciones[i] + '()');
        if (!res) {
            break;
        }
    }
    return res;
}

function focoAlert(id) {
    objCampo = document.getElementById('campo' + id);
    objLabel = document.getElementById('label' + id);
    alert('Campo "' + objLabel.title + '" erroneo!');
    objCampo.focus();
}

function isEmpty(s) {
    return ((s == null) || (s.length == 0))
}

function isDigit (c) {
    return ((c >= "0") && (c <= "9"))
}

function valida(id, checkOption) {
    var myRe;
    var myArray = new Array();
    var security = true;
    var value = document.getElementById('campo' + id).value;

    switch(checkOption) {
        case 'INTEGER':
            myRe = /^\-?[0-9]+$/g;
            myArray = value.match(myRe);
            if (myArray == null) {
                security = false;
            }
        break;
        case 'NUMERIC':
            myRe = /^\-?[0-9]+[\.,]{0,1}[0-9]+$/g;
            myArray = value.match(myRe);
            if (myArray == null) {
                security = false;
            }
        break;
        case 'TELEFONO':
            myRe = /^[\+]?[0-9 \.\-]{9,}$/g;
            if (value.match(myRe) == null) {
                security = false;
            }
        break;
        case 'CP':
            myRe = /^[0-9]{2}[ \t\.\-]?[0-9]{3}$/g;
            if (value.match(myRe) == null) {
                security = false;
            }
        break;
        case 'FECHA':
            myRe = /^[0-9]{2,4}[/-][0-9]{2,4}[/-][0-9]{2,4}$/g;
            if (value.match(myRe) == null) {
                security = false;
            }
        break;
        case 'EMAIL':
            myRe = /^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/g;
            if (value.match(myRe) == null) {
                security = false;
            }
        break;
        case 'CIF':
            var v1 = Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9);
            var temp = 0;
            var i;
            var control;
            for (i = 2; i <= 6; i = i + 2) {
                temp = temp + parseInt(v1[value.substr(i-1, 1)]);
                temp = temp + parseInt(value.substr(i, 1));
            }
            temp    = temp + v1[value.substr(7, 1)];
            temp    = (10 - (temp % 10));
            temp    = String(temp);
            temp    = temp.substr(-1);
            control = value.substr(-1);
            control = control.toLowerCase();
            control = (control == 'j') ? 0 : control;
            if ((control != temp) || (value.length < 9)) {
                security = false;
            }
        break;
        case 'NIF':
            if (value.length >= 8) {
                var letras = new Array('T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T');
                var dni = value.substr(0, value.length - 1);
                if (dni.substr(0,1).toLowerCase() == 'x') {
                    dni = dni.substr(1);
                }
                dni = parseInt(dni);
                var tmp = parseInt(dni) - parseInt(dni/23) * 23;
                var res = letras[tmp];
                if (res != value.substr(-1)) {
                    security = false;
                }
            } else {
                security = false;
            }
        break;
        case 'URL':
            value = value.toLowerCase();
            myRe = /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/g;
            if (value.match(myRe) == null) {
                security = false;
            }
        break;
        case 'TEXTAREA':
        case 'STRING':
            if (typeof(value) != 'string') {
                security = false;
            }
        break;
        case 'HTML':
        break;
        default:
            security = false;
        break;
    }
    if (!security) {
        focoAlert(id);
    }
    return security;
}

