//Este fichero contiene validación de e-mail, cuenta bancaria, CIF y NIF
//*********************VALIDACION DE E-MAIL************************
//DEVUELVE TRUE SI LA CADENA PASADA CONTIENE @
function old_esEmail(texto) { 
var textoStr = texto.toString() // transformo a string todo el campo
var tiene = 0
for(var i = 0;i < texto.length;i++){ // recorro letra por letra
	var oneChar = textoStr.charAt(i) 
	if (oneChar == "@") // busco una arroba en cada letra
		tiene = 1 
}		
 if (tiene == 1) // controlo si existe o no una arroba
	return false
 else  
	return true 
}
function EMAILvalido(campo)
{
	var arroba;
	var punto;
	var espacio;
	var texto=campo.value
	
	/*if (BW.IE){
		texto=document.ContractForm.txt_Email.value;
	}	
	if (BW.NS){		
		texto=document.forms['ContractForm'].txt_Email.value;
	}*/
	
	arroba=-1;
	punto=-1;
	espacio=-1;
	
	for  (i=0;i<texto.length;i++)
	{
		if (texto.charAt(i) == "@") arroba = i;
		if (texto.charAt(i) == ".") punto = i;
		if (texto.charAt(i) == " ") espacio = i;
	}
	
	if (espacio!=-1){
		alert('El E-mail no puede contener espacios.');
		campo.focus();
		return(true);
	}
			
	if ((arroba==-1) || (punto==-1) || (arroba>=punto) || (arroba+1==punto) || (punto==texto.length-1) || (arroba==0)){
		alert ("Introduzca una dirección de E-mail correcta");
		campo.focus();
		return(true);
	}
	return(false);
}


//****************VALIDACION CUENTA BANCARIA************
//RECIBE 4 PARAMETROS: CODIGO-BANCO CODIGO-OFICINA CODIGO-CONTROL CODIGO-CUENTA
//DEVUELVE TRUE SI LA CUENTA ES VALIDA
function checkBank(szBank, szSuc, szAccount, szDigit)
{	
	digitoObtenido = get_control_digit( szBank, szSuc, szAccount ); 
	
	if(szDigit == digitoObtenido ) 
		return true
	else 
		return false
}
function get_control_digit( szBank, szSuc, szAccount ) 
{ 
var nBank = Number( szBank ); 
var nSuc = Number( szSuc ); 
var nAccount = Number( szAccount ); 
var aNumbers = Array; 
var nSumaPesos1, nSumaPesos2; 
// coger cada numero del banco 
aNumbers[0] = Math.floor( nBank / 1000 ); 
nBank -= ( aNumbers[0] * 1000 ); 
aNumbers[1] = Math.floor( nBank / 100 ); 
nBank -= ( aNumbers[1] * 100 ); 
aNumbers[2] = Math.floor( nBank / 10 ); 
nBank -= ( aNumbers[2] * 10 ); 
aNumbers[3] = Math.floor( nBank ); 
// coger cada numero de la sucursal 
aNumbers[4] = Math.floor( nSuc / 1000 ); 
nSuc -= ( aNumbers[4] * 1000 ); 
aNumbers[5] = Math.floor( nSuc / 100 ); 
nSuc -= ( aNumbers[5] * 100 ); 
aNumbers[6] = Math.floor( nSuc / 10 ); 
nSuc -= ( aNumbers[6] * 10 ); 
aNumbers[7] = Math.floor( nSuc ); 
 // coger cada numero de la cuenta bancaria 
aNumbers[8] = Math.floor( nAccount / 1000000000 ); 
nAccount -= ( aNumbers[8] * 1000000000 ); 
aNumbers[9] = Math.floor( nAccount / 100000000 ); 
nAccount -= ( aNumbers[9] * 100000000 ); 
aNumbers[10] = Math.floor( nAccount / 10000000 ); 
nAccount -= ( aNumbers[10] * 10000000 ); 
aNumbers[11] = Math.floor( nAccount / 1000000 ); 
nAccount -= ( aNumbers[11] * 1000000 ); 
aNumbers[12] = Math.floor( nAccount / 100000 ); 
nAccount -= ( aNumbers[12] * 100000 ); 
aNumbers[13] = Math.floor( nAccount / 10000 ); 
nAccount -= ( aNumbers[13] * 10000 ); 
aNumbers[14] = Math.floor( nAccount / 1000 ); 
nAccount -= ( aNumbers[14] * 1000 ); 
aNumbers[15] = Math.floor( nAccount / 100 ); 
nAccount -= ( aNumbers[15] * 100 ); 
aNumbers[16] = Math.floor( nAccount / 10 ); 
nAccount -= ( aNumbers[16] * 10 ); 
aNumbers[17] = Math.floor( nAccount ); 

//   window.alert(    aNumbers[0]+ 
//  '/'+aNumbers[1]+ 
//  '/'+aNumbers[2]+ 
//  '/'+aNumbers[3]+ 
//  '/'+aNumbers[4]+ 
//  '/'+aNumbers[5]+ 
//  '/'+aNumbers[6]+ 
//  '/'+aNumbers[7]+ 
//  '/'+aNumbers[8]+ 
//  '/'+aNumbers[9]+ 
//  '/'+aNumbers[10]+ 
//  '/'+aNumbers[11]+ 
//  '/'+aNumbers[12]+ 
//  '/'+aNumbers[13]+ 
//  '/'+aNumbers[14]+ 
//  '/'+aNumbers[15]+ 
//  '/'+aNumbers[16]+ 
//  '/'+aNumbers[17] ); 
 // aplicamos la formula de los pesos 
nSumaPesos1= aNumbers[7] * 6+ aNumbers[6] * 3+ aNumbers[5] * 7 + aNumbers[4] * 9 + aNumbers[3] * 10 + aNumbers[2] * 5 
+ aNumbers[1] * 8 
+ aNumbers[0] * 4; 
nSumaPesos1 = Math.floor( 11 - ( nSumaPesos1 % 11 ) ); 
nSumaPesos1 = (nSumaPesos1 == 11 ? 0 : nSumaPesos1 ); 
nSumaPesos1 = (nSumaPesos1 == 10 ? 1 : nSumaPesos1 ); 
// window.alert( "Suma Pesos1 : " + nSumaPesos1 ); 
nSumaPesos2= aNumbers[17] * 6 
+ aNumbers[16] * 3 
+ aNumbers[15] * 7 
+ aNumbers[14] * 9 
+ aNumbers[13] * 10 
+ aNumbers[12] * 5 
+ aNumbers[11] * 8 
+ aNumbers[10] * 4 
+ aNumbers[9] * 2 
+ aNumbers[8] * 1; 
nSumaPesos2 = Math.floor( 11 - ( nSumaPesos2 % 11 ) ); 
nSumaPesos2 = (nSumaPesos2 == 11 ? 0 : nSumaPesos2 ); 
nSumaPesos2 = (nSumaPesos2 == 10 ? 1 : nSumaPesos2 ); 
// window.alert( "Suma Pesos2 : " + nSumaPesos2 ); 
return nSumaPesos1.toString() + nSumaPesos2.toString(); 
}
//*********************************VALIDACION NIF************
//RECIBE UN NUMERO dni Y DEVUELVE LA LETRA QUE LE CORRESPONDE
function letraNIF(n){
var d =(n/23)
d = Math.floor(d);
var e=d*23
var r=n-e
if (r==0)
return "T"
if (r==1)
return "R"
if (r==2)
return "W"
if (r==3)
return "A"
if (r==4)
return "G"
if (r==5)
return "M"
if (r==6)
return "Y"
if (r==7)
return "F"
if (r==8)
return "P"
if (r==9)
return "D"
if (r==10)
return "X"
if (r==11)
return "B"
if (r==12)
return "N"
if (r==13)
return "J"
if (r==14)
return "Z"
if (r==15)
return "S"
if (r==16)
return "Q"
if (r==17)
return "V"
if (r==18)
return "H"
if (r==19)
return "L"
if (r==20)
return "C"
if (r==21)
return "K"
if (r==22)
return "E"
} //fin funcion DNI


//******************VALIDACION CIF************
//RECIBE UNA CADENA Y DEVUELVE TRUE SI LA CADENA SE CORRESPONDE CON UN CIF
function ValidaCIF(cif1)
{
   var Retorno = true;
   var Entidad;
   var StEntidad;
   var Provincia;
   var NumeroSec;
   var CaracterControl, CaracterControlEntrada;
   var TablaControl = 'JABCDEFGHI';
   var otras = 'ABCDEFGHSPQX';
   var numero = '0123456789';
   var Suma = 0;
   var Suma1 = 0;
   var Suma2 = 0;
   var nAux = 0;
   var tmp = '';
   tmp = "" + cif1;
   Entidad = tmp.charAt(0);
   Entidad = Entidad.toUpperCase();
   if( otras.indexOf( Entidad) == -1) {
      return false;
   }
   Provincia = tmp.substring(1,3);
   NumeroSec = tmp.substring(3,8);
   NumeroSec2 = tmp.substring(1,8);
   CaracterControlEntrada = tmp.substring( 8);
   CaracterControlEntrada = CaracterControlEntrada.toUpperCase();
   if( (Entidad >= "A") && (Entidad <= "H") ) {
         StEntidad = "JURIDICA";
   }
   else if( (Entidad == "S") || (Entidad == "Q") ) {
      StEntidad="ORGANISMO";
   }
   else if( Entidad == "X") //  Extranjero residente
   {
   	tmpDNI=tmp.substring(1,8) 
   	tmpLetraNIF=tmp.substring(8,9)
   	if (letraNIF( tmpDNI)==tmpLetraNIF)
   	{ return true
   	 } else 
		return false
   }
   if( Retorno != false) {           // Entidad correcta
      for (var i = 0; i < NumeroSec2.length; i++) {
         if( numero.indexOf( NumeroSec2.charAt( i)) == -1) {
            return false;
         }
      }
      if( parseInt( NumeroSec, 10) == 0)
      {
         Retorno = false;
      }
      else if( (StEntidad == "JURIDICA") || (StEntidad == "ORGANISMO"))
      {
         Suma2 = 0;
         Suma1 = parseInt( NumeroSec2.charAt( 1), 10) + parseInt(
NumeroSec2.charAt( 3), 10) + parseInt( NumeroSec2.charAt( 5), 10 );
         for( var i = 0; i < 7; i += 2) {
            nAux = parseInt( NumeroSec2.charAt( i), 10) * 2;
            if (nAux > 9) {
               Suma2 = Suma2 + parseInt( nAux / 10, 10) + nAux % 10;
            } else {
               Suma2 = Suma2 + nAux;
            }
         }
         Suma = Suma1 + Suma2;
         i = 10 - Suma % 10;
         if( i > 9) {
            i = 0;
         };
         if( StEntidad == "JURIDICA") {
            CaracterControl = i;
         } else {
            CaracterControl = TablaControl.charAt( i);
         }
         if (CaracterControl != CaracterControlEntrada) {
                  CaracterControl = TablaControl.charAt( i);
            if (CaracterControl != CaracterControlEntrada)
                    Retorno = false;
         };
      }
   }

   return Retorno;
}

