var primeraVez = 1;

//  funGenerales.js : paquete que incluye funciones de validación general y 
// específica de campos de formularios.
//
// funciones de uso interno (no internas)
function trim(strCadena) {
    //  Función para eliminar los espacios en blanco a derecha e izquierda 
    // de una cadena. También elimina los espacios en blanco consecutivos en
    // la cadena y los sustituye por uno.
    // Si la entrada no es un tipo string devuelve el valor.
    if (typeof strCadena != "string") { 
        return strCadena; 
    }
    var ret = strCadena;
    var ch = ret.substring(0, 1);
    while (ch == " ") {
        // Comprueba los espacios al inicio de la cadena
        ret = ret.substring(1, ret.length);
        ch = ret.substring(0, 1);
    }
    ch = ret.substring(ret.length-1, ret.length);
    while (ch == " ") { 
        // Comprueba los espacios al final de la cadena
        ret = ret.substring(0, ret.length-1);
        ch = ret.substring(ret.length-1, ret.length);
    }
    while (ret.indexOf("  ") != -1) {
        // Elimina los espacios consecutivos en medio de la cadena
        ret = ret.substring(0, ret.indexOf("  ")) + ret.substring(ret.indexOf("  ")+1, ret.length);
    }
    return ret;
}
//
// funciones de uso externo.
function validaNotNull(ctl,nombreCampo) {
    // Valida que un campo obligatorio tenga valor y si no es así, avisa
    // Se quitan los espacios de la cadena.
    //
    // funciones internas
    //


    ctl.value = trim(ctl.value);
    if (ctl.value == "") {
        alert("Debe introducir un valor en el campo: "+nombreCampo);
        if (ctl.disabled==false) 
        ctl.focus();
        return false;
    } else {
        if (ctl.value == null) {
            // Es un radio button.
            var i = 0;
            while (i < ctl.length) {
                if (ctl[i].checked) {
                    return true;
                }
                i++;
            }
            alert("Debe introducir un valor en el campo: " + nombreCampo);
            if (ctl.disabled == false) {
                ctl.focus();
            }
            return false;
        }
        return true;
    }
}

function validaNull(ctl,nombreCampo) {
    // Valida que un campo no tenga valor y si lo tiene.., avisa.
    if (ctl.value != "") {
        alert("El campo: "+nombreCampo+" no puede tener valor.");
        ctl.value = "";
        ctl.focus();
        return false;
    }
    return true;
}

function aMayusculas(ctl) {
    //Convierte el contenido de un control a Mayusculas
    ctl.value = ctl.value.toUpperCase();
}

function radioSeleccionado(ctl) {
    //Devuelve el valor seleccionado de un radio button
    for (i=0;i<ctl.length;i++) {
        if (ctl[i].checked) {
            return(ctl[i].value);
        }
    }
}

// Desactiva todos los campos de el formulario de entrada. Disabled="true".
function bloquearCampos(formulario) {
  for (i=0; i<formulario.length; i++) {
    formulario.elements[i].disabled=true;
  }

  i=1; fin=false;
  while (!fin) {
    if (document.getElementById("BTN"+i)!=null) {
      document.getElementById("BTN"+i).style.visibility="hidden";
      i++;
    }
    else {
      fin=true;
    }
  }
}

function bloqueoReg(formulario) {
    // Cuando un campo ha sido bloquedo por otro usuarios, desactiva todos los campos de el formulario de entrada.
    // y muestra una alerta
    bloquearCampos(formulario)
    alert("El registro está siendo editado por otro usuario.");
}

// funciones específicas de campos
function validaCodPost(cpos, cprov, ctl) {
    //validaCodPost
    //Se invoca para cargar validar Códigos Postales.
    if (cpos.value.length > 0) {
        if (cpos.value.length == 5) {
            if (cpos.value.substring(0, 2) != cprov[cprov.selectedIndex].value) {
                if (ctl == cpos) {
                    cprov[posicionListaValor(cprov, cpos.value.substring(0, 2))].selected=true;
                    return true;       
                } else {
                    if (cprov[cprov.selectedIndex].value == '99') {
                        cpos.value = "99999";
                    } else {
                        cpos.value = cprov[cprov.selectedIndex].value;
                        cpos.focus();
                    }
                }
            }
        } else {
            alert ("El código postal no es correcto");
            cpos.value = "";
            cpos.focus();
            return false;
        }
    }
    return true;
}


function validarNumMar(nummar, vinimargin, marficdes, marfichas) {
    // Comprueba el rango del marginal, devuelve true si el param. nummar está en el rango
    //  contenido en el organo gestor actual, y  false en caso contrario.

    var resultado = true;
    if (nummar.value !=""){
        if (isNaN (nummar.value)){
            alert("El campo Marginal no es un número");
            resultado=false;
        }

        if (nummar.value >= vinimargin) {
            if (nummar.value < marficdes || nummar.value > marfichas) {
                alert("El valor del campo Marginal no está comprendido en el intervalo asignado al organo gestor");
                resultado=false;
            }
        } else {
            if (nummar.value <= 0) {
                alert("El valor del campo Marginal NO puede ser menor o igual que cero.");
                resultado=false;
            }
        }
    }

    if (!resultado) {
        nummar.value = nummar.defaultValue;
        nummar.focus();
    } else {
        resultado=true;  
    }
    return resultado;
}

function validarAplicaPresu(organica,funcional,economica) {
    var strCadena = trim(organica.value);
    if (strCadena.length < 2){ 
        alert ("Valor incorrecto en el campo Orgánica");
        organica.focus();
        return false;
    }
    strCadena = trim(funcional.value);
    if (strCadena.length < 4){
        alert ("Valor incorrecto en el campo Funcional");
        funcional.focus();
        return false;
    }
    strCadena = trim(economica.value);
    if (strCadena.length < 3){
        alert ("Valor incorrecto en el campo Económica");
        economica.focus();
        return false;    
    }
    return true;
}

