// Funciones a ejecutar en el submit
var funciones_someter_form_formulario = new Array();
function someter_form_formulario(form, action) {
    var objForm = document.getElementById(form);
    var res = true;
    var len = funciones_someter_form_formulario.length;
    for (someter_form_formulario_i=0; someter_form_formulario_i<len; someter_form_formulario_i++) {
        eval("res = " + funciones_someter_form_formulario[someter_form_formulario_i] + "('" + form + "')");
        if (!res) {
            document.getElementById('err_general').className='padd-f1 caj-err';
            break;
        }
    }
    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_formulario() {
    var i;
    var len = obligatorios.length;
    var res = true;
    for (i = 0; i < len; i++) {
        var foco = false;
        objCampo = document.getElementById('campo' + obligatorios[i]);
        lbl = document.getElementById('label' + obligatorios[i]).title;
        var id = obligatorios[i];
        tipo = objCampo.type
        if(objCampo.type=='textarea'){
            if(FCKeditorAPI.GetInstance(objCampo.id)){
                if( FCKeditorAPI.GetInstance(objCampo.id) ){
                    FCKeditorAPI.GetInstance(objCampo.id).UpdateLinkedField()
                    if(objCampo.value=='<br />'){
                        objCampo.value='';
                    }
                }
            }
        }

        var _className = objCampo.className.replace(/\-err$/,'');
        var _classNameErr = _className + '-err';
        if (!objCampo.value) {
            if(i==0){
                foco=true;
            }
            focoAlertObligatorio(obligatorios[i],foco);
            res = false;
            document.getElementById('desc_err' + id).className='';
            document.getElementById('desc_ayu' + id).className='msn-err';
            document.getElementById('desc_err' + id).className='ocu';
            document.getElementById('desc_ayu' + id).className='';
            objCampo.className=_classNameErr;
        }else{
            document.getElementById('desc_err' + id).className='';
            document.getElementById('desc_ayu' + id).className='';
            document.getElementById('desc_err' + id).className='ocu';
            document.getElementById('desc_ayu' + id).className='';
            objCampo.className=_className;
        }
    }
    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;
    var resultado = true;
    for (i=0; i < len; i++) {
        var foco = false;
        eval('res = ' + validaciones[i] + '()');
        if (!res || !resultado) {
            resultado=false;
        }
    }
    return resultado;
}

function validar_todo(){
    var res1 = validar_obligatorios_formulario();
    var res2 = validar_campos();
    return res1 && res2;
}

function focoAlert(id,foco) {
    objCampo = document.getElementById('campo' + id);
    if(foco){
        objCampo.focus();
    }
}

function focoAlertObligatorio(id,foco) {
    objCampo = document.getElementById('campo' + id);
    if(foco){
        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;
    //alert("valida="+document.getElementById('campo' + id).name + '--->' + checkOption);
    if(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':
                break;
            case 'STRING':
                if (typeof(value) != 'string') {
                    security = false;
                }
                break;
            case 'HTML':
                if(value=='<br />'){
                    value = '';
                }
                break;
            case 'FILE':
            	if (typeof(value) != 'string') {
                    security = false;
                }
            	break;
            default:
                security = false;
            break;
        }
        var objCampo = document.getElementById('campo' + id);
        var _className = objCampo.className.replace(/\-err$/,'');
        var _classNameErr = _className + '-err';
        if (!security) {
            focoAlert(id);
            document.getElementById('desc_err' + id).className='msn-err';
            document.getElementById('desc_ayu' + id).className='ocu';
            objCampo.className=_classNameErr;
        }else{
            document.getElementById('desc_err' + id).className='ocu';
            document.getElementById('desc_ayu' + id).className='';
            objCampo.className=_className;
        }
    }
    return security;
}

