// sctcasup.js  2002.06.10
// ***************************************************************************
// * Programa Javascript para registrarse y entrar en apl. frame superior    *
// ***************************************************************************

 //Chequea el browser

function lib_bwcheck(){

   this.ver=navigator.appVersion
   this.agent=navigator.userAgent
   this.dom=document.getElementById?1:0
   this.opera5=this.agent.indexOf("Opera 5")>-1 
   this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
   this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
   this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
   this.ie=this.ie4||this.ie5||this.ie6
   this.mac=this.agent.indexOf("Mac")>-1
   this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
   this.ns4=(document.layers && !this.dom)?1:0;
   this.bw=(this.ie6 || this.ie5 || this.ie  || this.ns4 || this.ns6 || this.opera5)
   return this
 }
 
var     bw = new lib_bwcheck() ;
var    cod = "" ;
var cadena = "" ;

function cambio_doc(tpd){
   //document.login_sup.NDOC.value = '';
   document.login_sup.PSW.value  = '';
   if(tpd[0].value == ""&&tpd.selectedIndex!=0)
   {
      var seleccionado_antes = tpd.selectedIndex - 1;
      var aux1=new Array();
      var aux2=new Array();
      for (var i=1;i<tpd.length;i++)
      {
          aux1.push(tpd.options[i].value);
          aux2.push(tpd.options[i].text);
      }
      tpd.length=0;
      for (var i=0;i<aux1.length;i++)
      {
        tpd.options[i]=new Option(aux2[i]);
        tpd.options[i].value=aux1[i];
      }

      tpd.selectedIndex=seleccionado_antes;
      tpd.length=i;
   }

}

function qndoc(){
   return  document.login_sup.NDOC.value ;
 }

function qtarj(){
   return  document.login_sup.TARJ.value ;
 }


function qpsw(){
   return  document.login_sup.PSW.value ;
 }


function qtpd(){
   return  document.login_sup.TPD[document.login_sup.TPD.selectedIndex].value ;
 }

function qtrj(){
   return  document.login_sup.NTAR.value ;
 }


function decodeTipo(tipo){
   if(tipo=='04') return  'N';
   if(tipo=='02') return  'D';
   if(tipo=='05') return  'P';
   if(tipo=='06') return  'R';
 }

//Función que comprueba que los caracteres sean números
//Si el caracter es numerico devuelve "1"
//para el resto "0".

function caracter(codigo){
   var salida ="";
   if((codigo>47)&&(codigo<58)){    //Es número
       salida = 1;
    } else salida = 0;
   return salida;
 }

//Función que comprueba que los caracteres no sean blancos

function blancos(codigo){
   var salida ="";
   if(codigo==32)
      salida = 1; else salida = 0;
   return salida;
 } 

//función que recupera la letra del DNI

function calculoNIF(dni){
   var cadena = 'TRWAGMYFPDXBNJZSQVHLCKET';
   var posicion = dni % 23;
   return cadena.charAt(posicion);
 }

//función que rellena a blancos o a ceros una cadena bien sea por
//la izquierda o por la derecha

function rellena(cadena,longitud,izq_der,ceros_blancos){
   cuantos = longitud - cadena.length;
   relleno   = '';
   for(i=0;i<cuantos;i++)
       relleno = relleno + ceros_blancos ;
   if(izq_der=='izq')
       return cadena = relleno + cadena  ;
   if(izq_der=='der')
       return cadena = cadena  + relleno ;
 }

function validanum(objeto,numero){
  tipo     = qtpd() ;

  var valor = objeto ; //Guardo el valor del objeto a verificar
  
  var lvalor = valor.length ;
  
  if(numero == '2'){
    if(tipo=='05'){ //pasaporte
       paspmalo='no';
       for(i=0;i<valor.length;i++){
         numero=blancos(valor.charCodeAt(i));
         if(numero==1){
            paspmalo='si';break;
          }
        }

       if(paspmalo== 'si'){
         alert('No introduzca blancos en el Pasaporte');
         return cadena='' ;
        }
       if(!/^[0-9,A-Z]{1,12}$/.test(valor)){                    
        alert("Introduzca únicamente números y letras. \n " +   
              "Sin espacios ni signos.");                       
         return cadena='' ;                                     
       }                                                         
       valor=rellena(valor,12,'izq','0');
     }
    else if(tipo == '02') { // DNI
       lvalor = valor.length ;
       dnimalo='no';
       for(i=0;i<valor.length;i++){
          numero=caracter(docum.charCodeAt(i));
          if(numero==0){dnimalo='si';break;}
        }
       
       if(lvalor>8){
          alert('El valor del DNI debe ser de hasta 8 dígitos');
          return cadena='';
        }
       else{
          if(dnimalo=='si'){
             alert('El valor del DNI deben ser sólo números');
             return cadena='' ;
           }
        }
       valor=rellena(valor,12,'izq','0');
     }
    else if(tipo == '04'){ // NIF
       var car    = caracter(valor.charCodeAt(docum.length-1,1));
       letra  = valor.substr(valor.length-1,1);
       lvalor = valor.length-1 ;
       valor2 = valor.substr(0,lvalor);
       if(valor.length>9){
          alert('El valor del NIF debe ser max. 9 posiciones: 8 dígitos y 1 letra');
          return cadena='';
        }
       else{
          if(car == 1){
             alert("Esta introduciendo un NIF, el último dígito debe ser letra");
             return cadena='';
           }
          else{
             if(letra!=calculoNIF(valor2)){
                alert("NIF incorrecto");
                return cadena = '' ;
              }
           }
        }
       valor=rellena(valor,12,'izq','0');
     }
    else if(tipo == '06'){ // Tarjeta de Residencia
       if(valor.length!=9){
          alert('El valor de la Tarjeta de Residencia debe ser de 9 caracteres');
          return cadena='';
        }
       else{
          antvalor = valor   ;
          letra  = valor.substr(0,1);
          letra2 = valor.substr(8,1);
          lvalor = 7 ;
          valor  = valor.substr(1,lvalor);
          if(letra!='J' && letra!='K' && letra!='L' && letra!='M' &&
           letra!='N' && letra!='X'){
             alert("Esta introduciendo una tarjeta de Residencia, "+
                   "el primer dígito debe ser un carácter válido");
             return cadena='';
           }
          if(letra2!=calculoNIF(valor)){
             alert("Esta introduciendo una tarjeta de Residencia, "+
                   "el noveno dígito debe ser un carácter válido");
             return cadena='';
           }
        }
       valor=rellena(antvalor,12,'izq','0');
     }
//  valor=rellena(valor,12,'izq','0');
   }
  return valor;
 }

//Validación de la contraseña

function validaPASS(pass){
	
   if(pass.indexOf('&')!=-1){
   	alert("Ha introducido un caracter no admitido. \n" +
   	      "Introduzca sólo números y letras.");
      return '';
   }
      	      
   if(pass.length<6 || pass.length>8){
      alert('Longitud de contraseña incorrecta. Debe ser entre 6 y 8 caracteres');
      return '';
    }
   else{
      if(pass.substr(0,1)=='@'){
         alert('La contraseña no puede comenzar por @');
         return '';
       }
      else{
          pass=rellena(pass,8,'der',' ');
          return pass;
       }
    }
  }

//Validación del Número de Tarjeta

function validaTARJ(tarj){
   if(tarj.length<8){
      alert('Longitud de Número de Tarjeta o Referencia incorrecta. Deben ser 8 caracteres');
      return '';
    }
   else{
      if(tarj.substr(0,1)=='@'){
         alert('El Nº de Tarjeta o Referencia no puede comenzar por @');
         return '';
       }
      else{
         if(pass==tarj){
            alert('El Número de Tarjeta y la Contraseña no pueden ser iguales');
            return '';
          }
         else{
            tarjmala='no';
            for(i=0;i<tarj.length;i++){
               numero=blancos(tarj.charCodeAt(i));
               if(numero==1){
                  tarjmala='si';
                  break;
                }
             }
            if(tarjmala == 'si'){
               alert('No introduzca blancos en la Tarjeta');
               return cadena='' ;
             }
          }
       }
    }
   return tarj;
 }

//Función para validación de parámetros de entrada

function entrada(){
   tarj   = qtarj().toUpperCase();
   pass   = qpsw().toUpperCase();

   if(tarj.replace (/ /g, '')==''){ // Valida si esta relleno el nº de tarjeta
      alert('Introduzca número de tarjeta');
      document.login_sup.NTAR1.focus();
      return ;
    }
   else{
      tarj = validaTARJ(tarj,'2')  ;
      if(tarj==''){document.login_sup.NTAR1.focus(); return;}
    }

// Valida Password
   if(pass.indexOf('&')!=-1){
   	alert("Ha introducido un caracter no admitido. \n" +
   	      "Introduzca sólo números y letras.");
      return ;
   }
   if(pass.replace (/ /g, '')==''){
      alert('Introduzca password');
      document.login_sup.PSW.focus();
      return ;
    }
   else{ 
      if(pass.length<6 || pass.length>8){
         alert('Longitud de contraseña incorrecta. Debe ser entre 6 y 8 caracteres');
         document.login_sup.PSW.focus();
         return ;
       }
      else{
         pass=rellena(pass,8,'der',' ');
     
        // Pase de varibales al top para que el index_superior.html las tenga. 
        // No está claro que las necesite
    
     //    top.docum = docum ;
     //    top.tipo  = tipo ;
     //    top.pass  = pass ;
     //    top.entra = '1' ;
    
        /* asignacion valores form */
         document.login_sup.NTAR1.value    = tarj;
         document.login_sup.PSW1.value    = pass ;
	
         document.login_sup.ENTRA.value   = 1;
         document.login_sup.IBIF_ex.value = 'PFTCAW01'; 
         document.login_sup.action = top.url_web + top.servlet ;
         document.login_sup.CGI_SERV.value = top.servlet ;
         document.login_sup.target='mainFrame';
    
        /* Modificamos el frame superiror, eliminamos el formulario de entrada */
         top.sup = 'S' ; 
         //parent.logo.document.location='index_superior.html';
    
        /* enviamos el formulario */
         document.login_sup.submit();
         //parent.logo.document.location='index_superior.html';
       }
    }
 }

//página solicitando nuevo usuario

function registrarse(){
   //tipo = decodeTipo(qtpd().toUpperCase());
/*   document.login_sup.IBIF_ex.value  = 'PFTCAW2B';*/ 
   document.login_sup.IBIF_ex.value  = 'PFTCAW02';
   document.login_sup.action = top.url_web + top.servlet ;
   document.login_sup.CGI_SERV.value = top.servlet;
  /* document.login_sup.CGI_SER2.value = top.servlet_a;*/
	
   document.login_sup.target='mainFrame';

  /* Modificamos el frame superiror, eliminamos el formulario de entrada */
   top.sup = 'S' ;
   //parent.logo.document.location='index_superior.html';
   
  /* enviamos el formulario */
   document.login_sup.submit();
 }


// Eliminación de blancos a la derecha.

function quitaBlancosDer(cadena) {
   cadena = (cadena) ? cadena : '' ;
   var fin=cadena.length-1;
   var palabra=cadena;
   while (palabra.charAt(fin)==' ') {
      palabra = palabra.substr(0,fin);
      fin = fin-1;
    }
   return palabra;
 }

// Eliminación de blancos a la izqda. y a la dcha.

function quitaBlancos(cadena) {
   cadena = (cadena) ? cadena : '' ;
   return quitaBlancosDer(quitaBlancosIzq(cadena));
 }

// Eliminación de blancos a la izquierda.

function quitaBlancosIzq(cadena) {
   cadena = (cadena) ? cadena : '' ;
   var inicio=0;
   var palabra=cadena;
   while (palabra.charAt(inicio)==' ')
      palabra = palabra.substr(inicio+1,palabra.length-1);
   return palabra;
 }

function ltrim(s){return s.replace( /^\s*/, "" )}

function rtrim(s){return s.replace( /\s*$/, "" );}

/* Función que combina las dos anteriores
   para eliminar los blancos de inicio y fin de la cadena */

function trim (s){return rtrim(ltrim(s));}


