function tei(stri)
{
	var aa=0;
	var strfinal=stri;
	while ((aa <= parseInt(stri.length)) && (stri.charAt(aa)==" "))
	{
	strfinal = stri.substring(aa+1,parseInt(stri.length));
	aa++;
   }// return strfinal;
   // El texto debe contener algun caracter del teclado.
   // Con esta validacion no permitimos por ejemplo que únicamente haya espacios en blanco y retorno
   if(/\w/.test(strfinal)==true) return strfinal;
   var caracteres="áéíóúàèòÁÀÉÈÍÓÒÚñÑç'üªº\!|@'?¿¡*`+{}-_.:,;<>·#$%&¬/()=";
   var caracterTeclado=0;
   for(var i =0; i<strfinal.length; i++)
   {
      if(caracteres.indexOf(strfinal.charAt(i))!=-1) 
      {
         return strfinal;
      }
      else if(/\"/.test(strfinal)==true) return strfinal;
   }
   if(/[\n]/.test(strfinal)==true) 
   {  return "";   }  
   else return strfinal;
}

function isInt(elm) 
{
	
	if( elm=="") return false;
	for (var i = 0; i < elm.length; i++) 
	{
	  if (elm.charAt(i) < "0" || elm.charAt(i) > "9")
	  return false;
	}	   
	return true;
}
function isString(elm) 
{
	
	if( elm=="") return false;
	//A=65 Z=90 a=97 z=122
	var acentos="áéíóúàèòÁÀÉÈÍÓÒÚñÑç'ü ";
	for (var i = 0; i < elm.length; i++) 
	{
	  if (elm.charAt(i) < "A" || ( elm.charAt(i) > "Z" && elm.charAt(i) <"a" ) || elm.charAt(i)>"z" )
	  {  
	    if(acentos.indexOf(elm.charAt(i))==-1) return false;  
	  }
	   
	}	   
	return true;
}
function esBisiesto(any)
{
	if (((any % 4)==0) && ((any % 100)!=0) || ((any % 400)==0)) return (true);
	else return (false);
}
   
function isDate(data)
{
	   var mesos = "312831303130313130313031"
	   if (data!="")
	   {
	      data=tei(data);
	      if ((pos1= data.indexOf("/",0)) == "-1")
	      return false;
	      dia = data.substring(0,pos1);
	      if ((pos2= data.indexOf("/",pos1+1)) == "-1")
	      return false;
	      mes = data.substring(pos1+1,pos2);
	      any = data.substring(pos2+1,data.length);
	      if ( (!isInt(any)) || (!isInt(mes)) || (!isInt(dia)) )
	      return false;
	      dia=parseInt(dia,10);
	      mes=parseInt(mes,10);
	      any=parseInt(any,10);
	      if (any < 1900 || any > 2050)
	      return false;
	      if ( (mes > 12) || (mes <= 0) )
	      return false;
	      if (mes == 2)
	      {
	      if (esBisiesto(any))
	      lastDate = 29;
	      else
	      lastDate = 28;
	      }
	      else
	      lastDate = mesos.substring((mes-1)*2, (mes-1)*2+2);
	      if ( (dia > lastDate) || (dia <=0) )
	      return false;
	   }
	   return true;
}

function compararFechas(data1,data2)
{
	   data1=tei(data1);
	   pos1= data1.indexOf("/",0);
	   dia1 = data1.substring(0,pos1);
	   pos2= data1.indexOf("/",pos1+1);
	   mes1 = data1.substring(pos1+1,pos2);
	   any1 = data1.substring(pos2+1,data1.length);
	   data1=any1+mes1+dia1;
   
	   data2=tei(data2);
	   pos1= data2.indexOf("/",0);
	   dia2 = data2.substring(0,pos1);
	   pos2= data2.indexOf("/",pos1+1);
	   mes2 = data2.substring(pos1+1,pos2);
	   any2 = data2.substring(pos2+1,data2.length);
	   data2=any2+mes2+dia2;
	   
	   if( data1 > data2)   {  return false; }  
	   return true;
} 


function isFloat(elm)
{
  
  if(elm == "") return false; 
  
  var k = 0;
  var aux = 0;
  var l = elm.length;
  for (var i = 0;i < l;i++)
  {
    if (elm.charAt(i) == ".")
    {
    	k++;
	var aux = i + 1; 
	if(k>1)  return false;	 	  	 
    }	
  }
  
  if( aux == 0)
  {
    var straux = elm;
    if(!isInt(straux)) return false;  
  }
  else if( aux == 1)
  {
    var straux1 = elm.substring(aux ,l);
    if(!isInt(straux1)) return false;  
  }
  else   
  {
     var straux2 = elm.substring(0,aux - 1);
     var straux3 = elm.substring(aux ,l);     	
     if(!isInt(straux2)) return false;
     if(!isInt(straux3)) return false;         
  }
  return true;
 }


function dosdig(dato)
{
  if(dato.length == 1 ) 
  {
    dato='0'+dato;
    return dato;
  }
  return dato;
}


//ANM, 21-12-2004: esta función valida si una cadena tiene formato de NIF
//(8 dígitos + letra), pero no si la letra es correcta 
function esFormatoNIF(cadena)
{
    if(cadena == null || cadena.length != 9)
    {
		return false;
	}
	var sinletra = cadena.substring(0,cadena.length -1);
	var letra = cadena.charAt(8).toUpperCase();
	
	for (i=0;i<8;i++)
	{
    	if (cadena.charAt(i)<'0' || cadena.charAt(i)>'9')
    		return false; //Son los números
    }
	
	if(letra < 'A' || letra > 'Z')
	{
		return false;
	}
	
	return true;
}


//ANM, 21-12-2004: esta función valida si una cadena tiene formato de NIE (tarjeta residente)
//(X/M + 8 dígitos + letra), pero no si la letra final es correcta 
function esFormatoTarjetaResidente(tarjeta)
{
	if(tarjeta != null && tarjeta.length == 10)
	{
		if(tarjeta.charAt(0).toUpperCase() == 'X' || tarjeta.charAt(0).toUpperCase() == 'M')
		{
			return true;
		}
	}
	return false;
}


//ANM, 21-12-2004: esta función valida la letra final es correcta
//en función de los dígitos numéricos. Vale para NIF y NIE
function validarLetraFinal(cadena)
{
    var sinletra,tabla,numero;
    tabla="TRWAGMYFPDXBNJZSQVHLCKE";
	
    //tomamos la secuencia numérica para el NIF o NIE
 	//NIF: <8 dígitos> + <letra>, NIE: X/M + <8 dígitos> + <letra>
    sinletras=cadena.substring(cadena.length-9,cadena.length-1);
    numero=parseInt(sinletras) % 23;
    
	//la última letra debe ser correcta
	if (tabla.charAt(numero)==cadena.charAt(cadena.length-1).toUpperCase())
    {
    	return true;
    }
    return false;
}


function TestNIF(NIF)
{
    //Función que valida que el NIF sea correcto, devuelve true, si lo es y si no false
    var sinletra,tabla,i,numero;
    tabla="TRWAGMYFPDXBNJZSQVHLCKE";
    sinletra=NIF.substring(0,NIF.length -1);
    if (NIF.length!=9)
    return false;
    for ( i=0;i<8 ;i++) 
    {
        if (NIF.charAt(i)<'0' || NIF.charAt(i)>'9')
        return false; //Son los números
    }
    if (NIF.charAt(8)>'0' && NIF.charAt(8)<'9')
    {
    //alert(NIF.charAt(8));
    return false;
    //Es la letra
    }
    while(sinletra.charAt(0)=='0')
    {
      sinletra=sinletra.substr(1);
    }
    numero=parseInt(sinletra) % 23;
    if (tabla.charAt(numero)==NIF.charAt(8).toUpperCase()) return true;
   
    return false;
}


function isEmail(elm)
{
   if(elm.indexOf("@")==-1)	
      return false;
   else
   {
      
      m=elm.indexOf("@");
      if(elm.charAt(m-1)=="."||elm.charAt(m+1)==".") return false;
      var aux=elm.substring(m+1,elm.length);      
      if(aux.indexOf(".")==-1) return false;
      else if(aux.charAt(aux.length-1)==".") return false;
           else return true;
   }  	 
}




// Verifica cuenta bancaria
// Devuelve     "00"    - No hay error
//              "01"    - Error en numero de cuenta
//              "10"    - Error en entidad/Oficina
//              "11"    - Error en entidad/Oficina y numero de cuenta
function verificaCuentaCorriente(entidad,oficina,digitos,ncuenta)
{
if (entidad=="    " && oficina=="    " && ncuenta=="          " && digitos=="  ") 
 {
   // alert("cuenta no informada") ;
   return true ;
 }
if (entidad=="" && oficina=="" && ncuenta=="" && digitos=="")  return true ;


if (entidad=="0000")
 {
   alert("Entidad no informada") ;
   return false ;
 }
 if (oficina=="0000")
 {
   alert("Oficina no informada") ;
   return false ;
 }
 if (ncuenta=="0000000000")
 {
   alert("cuenta no informada") ;
   return false ;
 }


// Entidad y oficina         
wp = entidad + oficina  ;  
wval1 = 0 ;

wval1 += ( parseInt(wp.substr(7,1)) * 6 ) ;
wval1 += ( parseInt(wp.substr(6,1)) * 3 ) ;
wval1 += ( parseInt(wp.substr(5,1)) * 7 ) ;
wval1 += ( parseInt(wp.substr(4,1)) * 9 ) ;
wval1 += ( parseInt(wp.substr(3,1)) * 10) ;
wval1 += ( parseInt(wp.substr(2,1)) * 5 ) ;
wval1 += ( parseInt(wp.substr(1,1)) * 8 ) ;
wval1 += ( parseInt(wp.substr(0,1)) * 4 ) ;
wval1  = 11 - ( wval1%11 ) ;

if (wval1 == 10) wval1 = 1 ;
if (wval1 == 11) wval1 = 0 ;

if ( digitos.substr(0,1) != wval1 ) wsal1 = "1" ;
else wsal1 = "0" ;


// Numero de cuenta
wp = ncuenta  ; 
wval2 = 0 ;
wval2 += ( parseInt(wp.substr(9,1)) * 6) ;
wval2 += ( parseInt(wp.substr(8,1)) * 3 ) ;
wval2 += ( parseInt(wp.substr(7,1)) * 7 ) ;
wval2 += ( parseInt(wp.substr(6,1)) * 9 ) ;
wval2 += ( parseInt(wp.substr(5,1)) * 10) ;
wval2 += ( parseInt(wp.substr(4,1)) * 5 ) ;
wval2 += ( parseInt(wp.substr(3,1)) * 8 ) ;
wval2 += ( parseInt(wp.substr(2,1)) * 4 ) ;
wval2 += ( parseInt(wp.substr(1,1)) * 2 ) ;
wval2 += ( parseInt(wp.substr(0,1)) * 1 ) ;

wval2  = 11 - ( wval2%11 ) ;
if (wval2 == 10) wval2 =1 ;
if (wval2 == 11) wval2=0 ;

if (digitos.substr(1,1) != wval2 ) wsal2 = "1" ;
else wsal2 = "0" ;

// alert("digito control correcto "+wval1+wval2) ;

if (wsal1=="1" || wsal2=="1")
{
 alert("Digito Control Erroneo") ;
 return false ;
 } 
return true ;
}

function rellenarCeros(campo,longitud)
{
  var ceros="" ;
  numCeros=eval(longitud+"-"+campo+'.value.length') ;
  if (numCeros>0 && numCeros!=longitud) 
     {
     for (i=1 ; i<=numCeros; i++) ceros=ceros+"0" ;
     valor=ceros+eval(campo+'.value') ;
     eval(campo+'.value="'+valor+'"') ;
     }
}