// ---------------------------------------------------------------------------------------------------------------------------
// validar.js
// (C) 2003 Ricardo Martin
// Para usar este archivo: <script language="JavaScript" src="validar.js" type="text/javascript"></script >
// ---------------------------------------------------------------------------------------------------------------------------

// comprueba si un campo esta vacio
// parametros: un numero ilimitado de cajas de texto
// valor de retorno: TRUE=hay algun campo vacio FALSE=no hay campos vacios

function Vacio()
{
	for (i=0 ; i<arguments.length ; i++)
	{
		if (!arguments[i].value)
		{
			alert("Alguno de los campos requeridos está vacio.");
			arguments[i].focus();
			return true;
		}
	}
}

// comprueba si el usuario introdujo caracteres no permitidos
// parametros: caracteres no permitidos separados por comas (,), caja de texto
// valor de retorno: TRUE=no se introdujeron caracteres prohibidos FALSE=se introdujeros caracteres no permitidos

function noPermitido()
{
	var strNoPermitidos='';
	var bCorrecto=true;
	
	for (i=0 ; i<arguments.length-1 ; i++)
	{
		strNoPermitidos=strNoPermitidos+arguments[i]+' ';
		if (arguments[arguments.length-1].value.indexOf(arguments[i])!=-1) // se cumple cuando el caracter existe
			bCorrecto=false;	
	}	
	if (bCorrecto==false)
	{
		alert('The characters ' + strNoPermitidos + ' aren\'t allowed.');
		arguments[arguments.length-1].focus();
		return false;
	}	
	else
		return true;
}			

// comprueba si el valor de un campo llega a la longitud minima indicada
// parametros: caja de texto, longitud minima
// valor de retorno: TRUE=el campo no tiene la longitud minima FALSE=el campo cumple con la longitud minima

function LongitudMinCorrecta(txtCampo,Longitud)
{
	var strContenido="";
	strContenido=txtCampo.value;
	if (strContenido.length<Longitud)
	{
		alert("This field must have more than " + Longitud + " characters.");
		txtCampo.focus();
		return true;
	}	
}

// comprueba si el NIF/CIF indicado en la caja de texto es valido o no
// parametros: caja de texto
// valor de retorno: TRUE=el NIF/CIF es correcto FALSE=el NIF/CIF no es correcto

function NIFCorrecto(txtNIF)
{
	var ASC;
	var strLetraCorrecta;
	var strNIF=txtNIF.value;
	var strLetra=strNIF.substring((strNIF.length)-1,strNIF.length);
  	var strDNI=strNIF.substring(0,(strNIF.length)-1);	
	var iDNI=parseInt(strDNI);
		
	ASC= iDNI % 23;

	switch(ASC)
	{
		case 0: {strLetraCorrecta="T";break}
		case 1: {strLetraCorrecta="R";break}
		case 2:	{strLetraCorrecta="W";break}
		case 3:	{strLetraCorrecta="A";break}	
		case 4:	{strLetraCorrecta="G";break}
		case 5:	{strLetraCorrecta="M";break}
		case 6:	{strLetraCorrecta="Y";break}
		case 7:	{strLetraCorrecta="F";break}
		case 8:	{strLetraCorrecta="P";break}
		case 9:	{strLetraCorrecta="D";break}
		case 10:{strLetraCorrecta="X";break}
		case 11:{strLetraCorrecta="B";break}
		case 12:{strLetraCorrecta="N";break}
		case 13:{strLetraCorrecta="J";break}
		case 14:{strLetraCorrecta="Z";break}
		case 15:{strLetraCorrecta="S";break}
		case 16:{strLetraCorrecta="Q";break}
		case 17:{strLetraCorrecta="V";break}
		case 18:{strLetraCorrecta="H";break}
		case 19:{strLetraCorrecta="L";break}
		case 20:{strLetraCorrecta="C";break}
		case 21:{strLetraCorrecta="K";break}
		case 22:{strLetraCorrecta="E";break}
		case 23:{strLetraCorrecta="T";break}
	};

	if (strLetraCorrecta!=strLetra)
	{
		alert("El NIF introducido no es válido.");
		txtNIF.focus();
		return false;
	}	
	else
		return true;	
}

// comprueba si la direccion de correo electronico tiene el formato correcto
// parametros: caja de texto
// valor de retorno: TRUE=el formato es correcto FALSE=el formato no es correcto

function EmailCorrecto(txtEmail)
{
	var strEmail=txtEmail.value;
	var strArroba="";
	
	strArroba=strEmail.match("@");
	
	if ((strArroba==null))
	{
		alert("La dirección de email no es válida.");
		txtEmail.focus();	
		return false;
	}
	else
		return true;
}

// comprobacion de contraseñas
// parametros: las dos cajas de texto a comparar
// valor de retorno: TRUE=la contraseña coincide FALSE=la contraseña no coincide

function ContrasenaCorrecta(txtContrasena,txtContrasena2)
{
	var strContrasena1=txtContrasena.value;
	var strContrasena2=txtContrasena2.value;
	
	if (strContrasena1!=strContrasena2)
	{
		alert("La contraseña no coincide.");
		txtContrasena.focus();
		return false;
	}
	else
		return true;
}		

// comprobacion de numero de cuenta
// parametros: las cajas de texto con el numero de cuenta: Entidad,Oficina,DigitoDeControl,NumeroDeCuenta
// valor de retorno: TRUE=el numero de cuenta es correcto FALSE=el numero de cuenta no es correcto

function NumeroCuentaCorrecto(txtEntidad,txtOficina,txtDC,txtNumeroCuenta)
{
	var aPesos=new Array(6,3,7,9,10,5,8,4,2,1);
	var i=0;
	var iTemp=0;
	var strBanco=null;
	var iResultado=0;
	var strCuenta=txtNumeroCuenta.value;
	var iDC=parseInt(txtDC.value);
	
	strBanco=txtEntidad.value + txtOficina.value;
	
	for (i=0;i<8;i++)
	{	
		iTemp=iTemp + parseInt(strBanco.substring(7-i,(7-i)+1)) * aPesos[i];
	}
	
	iResultado=11-iTemp % 11;
	
	if (iResultado>9)
		iResultado=1-iResultado % 10;
	
	iTemp=0;
	
	for (i=0;i<10;i++)
		iTemp=iTemp + parseInt(strCuenta.substring(9-i,(9-i)+1)) * aPesos[i];
	iTemp=11-iTemp % 11;
	
	if (iTemp>9)
		iTemp=1-iTemp % 10;
	
	iResultado=(iResultado*10) + iTemp;
	
	if (iResultado==iDC)
		return true;
	else
	{
		alert("El nº de cuenta introducido no es válido.");
		txtEntidad.focus();
		return false;
	}
}				