/*esNumero (sin coma)*/
function esNumero (obj)
{
	return (/^([0-9])+$/.test(obj.value));
}

/* Valida teléfono */
function valida_telefono(obj)
{
	var tel;

	tel=obj.value;
	if (!esNumero(obj))
	{
		return false;
	}

	pre=tel.charAt(0);
	if (pre!='9' && pre!='8')
	{		
		return false;	
	}
	else
	{
		if (tel.length!=9)
		{
			return false;	
		}
		else
		{
			return true;	
		}	
	}
}
/*Fin valida_telefono */

/*Valida movil*/
function valida_movil(obj)
{
	var tel;
	tel=obj.value;

	if (!esNumero(obj))
	{
		return false;
	}
	pre=tel.charAt(0);
	if (pre!='6')
	{		
		return false;	
	}
	else
	{
		if (tel.length!=9)
		{
			return false;	
		}
		else
		{
			return true;	
		}	
	}
}
/*Fin valida movil */

/*Valida fechas */
function esFecha (sFecha)
{
	var regexp = /-/gi;
	sFecha = sFecha.replace(regexp,"/");
	
	var vAux = sFecha.split ("/");
	if (vAux.length != 3) { return false} 	
	//Si el año es distinto de cuatro digitos se devuelve error.
	if (vAux[2].length != 2)  { return false}
	
	if (vAux[2] < 50) vAux[2]='20'+vAux[2];
	else vAux[2]='19'+vAux[2];

	bBisiesto = (((parseInt (vAux[2]%4, 10) == 0) && 
				  (parseInt (vAux[2]%100, 10) != 0)) ||
				  (parseInt (vAux[2]%400, 10) == 0));

	switch (parseInt (vAux[1], 10)) 
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12: 
		{
			return ((parseInt (vAux [0], 10) <= 31) && (parseInt (vAux[0], 10) > 0));
			break;
		}
		
		case 4:
		case 6:
		case 9:
		case 11: 
		{
			return ((parseInt (vAux [0], 10) <= 30) && (parseInt (vAux[0], 10) > 0));
			break;
		}
		case 2: 
		{
			if (bBisiesto) 
			{
				return ((parseInt (vAux [0], 10) <= 29) && (parseInt (vAux[0], 10) > 0));
			}
			else 
			{
				return ((parseInt (vAux [0], 10) <= 28) && (parseInt (vAux[0], 10) > 0));
			}
			break;
		}
		default: return false; 

	}
}

function formatearFecha(objFecha)
{
	sFecha = objFecha.value;
	var regexp = /-/gi;
	sFecha = sFecha.replace(regexp,"/");	
	var vAux = sFecha.split ("/");
	
	if (vAux[0].length < 2) vAux[0] = "0" + vAux[0].toString();
	if (vAux[1].length < 2) vAux[1] = "0" + vAux[1].toString();
	
	objFecha.value=vAux[0] + "/" + vAux[1] + "/" + vAux[2];		
}

function valida_fecha(objFecha,pos)
{
	pos = parseInt(pos,10);	
	if (objFecha.value == "") return;

	if (esFecha(objFecha.value)) 
	{	
		formatearFecha(objFecha);
	}
}
/*Fin valida fechas*/

/* Valida mail*/
function valida_correo(obj)
{ 
	var texto = obj.value;
    var mailres = true;             
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-"; 
     
    var arroba = texto.indexOf("@",0); 
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1; 
     
    var punto = texto.lastIndexOf("."); 
                 
    for (var contador = 0 ; contador < texto.length ; contador++)
	{ 
        if (cadena.indexOf(texto.substr(contador, 1),0) == -1)
		{ 
            mailres = false; 
            break; 
        } 
    } 

    if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (mailres == true) && (texto.indexOf("..",0) == -1)) 
     mailres = true; 
    else 
     mailres = false; 
                 
    return mailres; 
}
/*Fin valida mail*/


//Valida CIF, NIF y NIE
function valida_nif(obj)
{
	var error_message="";
	nif_cif = obj.value;
	if(nif_cif.length==9)
	{ 
		nif_cif=nif_cif.toUpperCase(); 
		if((/^[ABCDEFGHKLMNPQS]/.test(nif_cif)) && !isNaN(nif_cif.substr(1,7)))
		{ 
			//Comienza por una letra valida seguida de 8 números, posiblemente sea un CIF 
			var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
			var letra = new Array ('A','B','C','D','E','F','G','H','I','J');
			var temp = 0; 
			var temp1; 
	  
			for( i = 2; i <= 6; i += 2 ) 
			{ 
				temp = temp + v1[ parseInt(nif_cif.substr(i-1,1)) ]; 
				temp = temp + parseInt(nif_cif.substr(i,1)); 
			} 
	  
			temp = temp + v1[ parseInt(nif_cif.substr(7,1)) ]; 
			temp = (10 - ( temp % 10)); 
	  
			if( temp == 10 )
			{ 
				if(nif_cif.charAt(8)!="J" && nif_cif.charAt(8)!=0)
				{ 
					error_message = "El NIF/CIF no es correcto"; 
				} 
			} 
	  
			else 
			{ 
				if(nif_cif.charAt(8)!=temp && nif_cif.charAt(8)!=letra[temp-1])
				{ 
					error_message = "El NIF/CIF no es correcto";           
				} 
			}	 
		} 
   
		else if(/[0-9]{8}[ABCDEFGHJKLMNPQRSTVWXYZ]/.test(nif_cif))
		{ 
			 //Comienza por 8 números seguidos de una letra válida, posiblemente sea un NIF 
			var temp = "TRWAGMYFPDXBNJZSQVHLCKET"; 
			var posicion_letra = nif_cif.substring(0,8) % 23; 
	
			if(nif_cif.charAt(8)!=temp.charAt(posicion_letra))
			{ 
				error_message = "El NIF/CIF no es correcto"; 
			}    
		} 

		else if(/[X][0-9]{7}[ABCDEFGHJKLMNPQRSTVWXYZ]/.test(nif_cif))
		{ 
			//Comienza por una X, 7 números y después una letra válida, posiblemente sea un NIE 
			var temp = "TRWAGMYFPDXBNJZSQVHLCKET"; 
			var posicion_letra = nif_cif.substring(1,8) % 23; 
	
			if(nif_cif.charAt(8)!=temp.charAt(posicion_letra))
			{ 
				error_message = "El NIF/CIF no es correcto"; 
			}    
		} 
		else
		{			
			error_message = "El NIF/CIF no es correcto"; 
		} 
	}     
	else 
	{ 
		error_message = "El NIF/CIF debe tener 9 caracteres, si es necesario rellene con ceros en la izquierda"; 
	}
	
	if (error_message != "")
	{
		alert(error_message);
		return false;
	}
	else
	{
		return true;
	}
	
} 
/* Fin valida CIF, NIF y NIE */

/* Valida número de documento */
function valida_numdocumento(obj,tipodoc)
{
	var error_message="";
	numdocumento = obj.value.toUpperCase(); ;	

	switch (tipodoc)
	{
		case '1':
			if (!esNumero(obj))
			{
				alert('El DNI debe ser numérico');
				return false;
			}
			if (numdocumento.length!=8)
			{
				alert('El DNI debe tener 8 cifras. Rellene con ceros a la izquierda si fuera necesario');
				return false;
			}
			break;
		
		case '2':
			if (numdocumento.length!=9)
			{
				alert('El NIF debe tener 9 cifras. Rellene con ceros a la izquierda si fuera necesario');
				return false;
			}

			if(/[0-9]{8}[ABCDEFGHJKLMNPQRSTVWXYZ]/.test(numdocumento))
			{ 
				var temp = "TRWAGMYFPDXBNJZSQVHLCKET"; 
				var posicion_letra = numdocumento.substring(0,8) % 23; 
		
				if(numdocumento.charAt(8)!=temp.charAt(posicion_letra))
				{ 
					alert('El NIF no es correcto');
					return false;
				}    
			} 
			else
			{
				alert('El NIF no es correcto');
				return false;
			}

			break;

		case '3':			 
			if (!(/^([A-Z]|[0-9])+$/.test(numdocumento)))
			{ 
				alert('El Pasaporte no es correcto');
				return false;
			}
			break;

		case '4':
			if (numdocumento.length!=9)
			{
				alert('La tarjeta de residente debe tener 9 cifras');
				return false;
			}

			if(/[X][0-9]{7}[ABCDEFGHJKLMNPQRSTVWXYZ]/.test(numdocumento))
			{ 
				//Comienza por una X, 7 números y después una letra válida, posiblemente sea un NIE 
				var temp = "TRWAGMYFPDXBNJZSQVHLCKET"; 
				var posicion_letra = numdocumento.substring(1,8) % 23; 
		
				if(numdocumento.charAt(8)!=temp.charAt(posicion_letra))
				{ 
					alert('La tarjeta de residente no es correcta');
					return false;
				}    
			} 
			else
			{
				alert('La tarjeta de residente no es correcta');
				return false;
			}

			break;
		case '6':
			if((/^[ABCDEFGHKLMNPQS]/.test(numdocumento)) && !isNaN(numdocumento.substr(1,7)))
			{ 
				//Comienza por una letra valida seguida de 8 números, posiblemente sea un CIF 
				var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
				var letra = new Array ('A','B','C','D','E','F','G','H','I','J');
				var temp = 0; 
				var temp1; 
		  
				for( i = 2; i <= 6; i += 2 ) 
				{ 
					temp = temp + v1[parseInt(numdocumento.substr(i-1,1)) ]; 
					temp = temp + parseInt(numdocumento.substr(i,1)); 
				} 
		  
				temp = temp + v1[parseInt(numdocumento.substr(7,1)) ]; 
				temp = (10 - ( temp % 10)); 
		  
				if( temp == 10 )
				{ 
					if(numdocumento.charAt(8)!="J" && numdocumento.charAt(8)!=0)
					{ 
						alert('El CIF no es correcto'); 
						return false;
					} 
				} 		  
				else 
				{ 
					if(numdocumento.charAt(8)!=temp && numdocumento.charAt(8)!=letra[temp-1])
					{ 
						alert('El CIF no es correcto');
						return false;
					} 
				}	 
			}
			else
			{
				alert('El CIF no es correcto');
				return false;
			}
			break;
	}

	return true;
}
/* Valida número de documento */

/* valida numero de cuenta */
function obtenerDigito(valor)
{ 
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6); 
  control = 0; 
  for (i=0; i<=9; i++) 
  {
	control += parseInt(valor.charAt(i)) * valores[i];
  } 
  control = 11 - (control % 11); 
  if (control == 11) control = 0; 
  else if (control == 10) control = 1; 
  return control; 
}

function valida_cuenta(obj)
{
	numCuenta = obj.value;
	aCuenta = numCuenta.split('-');
	
	//banco y sucursal
	cc1 = '00' + aCuenta[0].toString() + aCuenta[1].toString();
	// num de cuenta
	cc2 = aCuenta[3].toString();

	dc1 = obtenerDigito(cc1);
	dc2 = obtenerDigito(cc2);
	
	return (aCuenta[2] == obtenerDigito(cc1).toString() + obtenerDigito(cc2).toString());		
}

/* fin valida numero de cuenta */


/* Inicio crea mascara
	d -> objeto
	sep -> separador
pat -> patrón
	nums -> true : permite letras y números; false: sólo numeros*/
var patronCuenta = new Array(4,4,2,10);

function mascara(d,sep,pat,nums)
{
	//permite controlar si es igual el contenido anterior al actual
	//en la caja de texto
	if(d.valant != d.value)
	{
		val = d.value;
		largo = val.length;
		val = val.split(sep);
		val2 = '';
		for(r=0;r<val.length;r++){
			val2 += val[r];	
		}
		if(nums)
		{
			for(z=0;z<val2.length;z++)
			{
				if(isNaN(val2.charAt(z)))
				{
					letra = new RegExp(val2.charAt(z),"g");
					val2 = val2.replace(letra,"");
				}
			}
		}
		val = '';
		val3 = new Array();
		for(s=0; s<pat.length; s++)
		{
			val3[s] = val2.substring(0,pat[s]);
			val2 = val2.substr(pat[s]);
		}
		for(q=0;q<val3.length; q++)
		{
			if(q ==0)
			{
				val = val3[q];
			}
			else
			{
				if(val3[q] != "")
				{
					val += sep + val3[q];
				}
			}
		}
		d.value = val;
		d.valant = val;
	}
}
/* Fin crea mascara*/

//Función borrar blancos
function borrarBlancos(cadena)
{			
	cadena = cadena.replace(/[ ]+/gi,' ');
	cadena = cadena.replace(/^([ ])/gi,'');
	cadena = cadena.replace(/([ ])+$/gi,'');

	return cadena;
}
//Fin Función borrar blancos