// Autor: Esteban Gómez Pérez
//        CMI-Excmo.Ayto.Toledo
// Fecha: 15/12/2000
//
//
// Explicación del programa
// ---------------------------
// * Las variables deben comenzar por 2 caracteres fijos, llamado sUno para la primera
//   posición y sDos para la segunda.
//
//     sUno -> n = Numerico
//             e = Dirección de correo electrónico (email)
//             s = Cadena (string)
//
//     sDos -> r = De obligatoria cumplimentación (requerido)
//             o = No es necesario cumplimentarlo (opcional)
//
// * El valor que viene en la variable "val" debe ser el nº de elementos del formulario que no se deben 
//   controlar, como botones o campos ocultos (hidden).
//

// =================================== Variables Globales

var swOK=0;
var nEle=0;
var sError='';

// =================================== VERIFICA EL FORMULARIO
function validar(val){
  var nTot=0;
  var nPas=0;
  var nTorna=0;
  sError="Lista de errores:                                           "+"\n";
  for (var j=0; j<(document.forms[0].length)-val; j++){
    nEle=j;
// =================================== AVERIGUA EL TIPO DE DATO
    var sNom=document.forms[0].elements[j].name;
    var sUno=sNom.substring(0,1);
    var sDos=sNom.substring(1,2);

// =================================== CORREO OBLIGATORIO
    if (sUno=='e' && sDos=='r'){
      CaracterNoValido(document.forms[0].elements[j].value,'Er');
      nTot+=swOK;
    }
    else
      if (sUno=='e' && document.forms[0].elements[nEle].value!=''){
        CaracterNoValido(document.forms[0].elements[j].value,'Eo');
        nTot+=swOK;
      }
// =================================== NUMERICO Y OBLIGATORIO
// =================================== else NUMERICO NO OBLIGATORIO PERO INFORMADO

    if (sUno=='n' && sDos=='r'){
      CaracterNoValido(document.forms[0].elements[j].value,'Nr');
      nTot+=swOK;
    }
    else
      if (sUno=='n' && document.forms[0].elements[nEle].value!=''){
        CaracterNoValido(document.forms[0].elements[j].value,'No');
        nTot+=swOK;
      }

// =================================== CADENA Y OBLIGATORIA
    if (sUno=='s' && sDos=='r'){
      CaracterNoValido(document.forms[0].elements[j].value,'Sr');
      nTot+=swOK;
    }

// =================================== Lista los errores
    if (nPas==0 && nTot>0){
      document.forms[0].elements[nEle].focus();
      nPas=1;
    }
  }
  if (nTot>0) {
    alert(sError);
  }
  else {
    document.forms[0].submit();
  }
}

// =================================== ANALIZA CAMPO A CAMPO SI SON NUMERICOS
function CaracterNoValido(pCaracter,pType){
  swOK=0;
// =================================== E-MAIL OBLIGATORIO
  if (pType=='Er'){ 
    swOK=2
    for (var i=0;i<pCaracter.length;i++){
      var sByte=pCaracter.substring(i,i+1);
      if (sByte=="@" || sByte=="."){
          swOK=swOK-1;
      } 
    }
    if (swOK>0){
      var sTres=document.forms[0].elements[nEle].name;
      var sCuatro=sTres.substr(2);
      sError+="El campo "+sCuatro+" debe ser e-mail y es obligatorio" +"\r"
    }
    return;
  }

// =================================== E-MAIL OBLIGATORIO
  if (pType=='Eo'){ 
    swOK=2
    for (var i=0;i<pCaracter.length;i++){
      var sByte=pCaracter.substring(i,i+1);
      if (sByte=="@" || sByte=="."){
          swOK=swOK-1;
      } 
    }
    if (swOK>0){
      var sTres=document.forms[0].elements[nEle].name;
      var sCuatro=sTres.substr(2);
      sError+="El campo "+sCuatro+" debe ser e-mail y NO es obligatorio" +"\r"
    }
    return;
  }

// =================================== NUMERICO OBLIGATORIO
  if (pType=='Nr'){ 
    swOK=0;
    if (pCaracter==''){
      swOK=1
      var sTres=document.forms[0].elements[nEle].name;
      var sCuatro=sTres.substr(2);
      sError+="El campo "+sCuatro+" debe ser numérico y es obligatorio" +"\r"
      return
    }
    for (var i=0;i<pCaracter.length;i++) {
      var sByte=pCaracter.substring(i,i+1);
        if (sByte<"0" || sByte>"9") {
          var sTres=document.forms[0].elements[nEle].name;
          var sCuatro=sTres.substr(2);
          sError+="El campo "+sCuatro+" debe ser numérico y es obligatorio" +"\r"
          swOK=1;
          return;
        } 
      }
    }

// =================================== NUMERICO INFORMADO
    if (pType=='No') { 
      swOK=0;
      if (pCaracter=='') {
        swOK=1
        var sTres=document.forms[0].elements[nEle].name;
        var sCuatro=sTres.substr(2);
        sError+="El campo "+sCuatro+"  debe ser numérico y NO es obligatorio" +"\r"
        return
      }
      for (var i=0;i<pCaracter.length;i++) {
        var sByte=pCaracter.substring(i,i+1);
        if (sByte<"0" || sByte>"9") {
          var sTres=document.forms[0].elements[nEle].name;
          var sCuatro=sTres.substr(2);
          sError+="El campo "+sCuatro+"  debe ser numérico y NO es obligatorio" +"\r"
          swOK=1;
          return;
        } 
      }
    }
// =================================== CADENA

    if (pType=='Sr') { 
      if (pCaracter=='') {
        var sTres=document.forms[0].elements[nEle].name;
        var sCuatro=sTres.substr(2);
        sError+="El campo "+sCuatro+"  debe ser texto y es obligatorio"+"\r"
        swOK=1;
        return
      }
    }
  }
