<!-- 
/********************************************************************
* 												funValidaciones.js	*
* Autor: CREAVISION Digital											*
* Fecha de creacion: 18/12/2003										*
* Funciones:	fncValidarCaracteresEspeciales()					*
*				fncValidarEmail()									*
*				fncEsNumero()										*
*				fncEntre2Numeros()									*
*				fncValidarNumCuenta()								*
*				fncValidarNif()										*
*				fncValidarCif()										*
* Comentarios: 														*
*********************************************************************/



/********************************************************************
* Nombre: fncValidarCaracteresEspeciales()							*
* Autor: CREAVISION Digital											*
* Argumentos:	strCadena (Cadena) --> Cadena a validar				*
* Resultado: Verdadero en caso de validacion correcta. Falso en 	*
*				caso contrario										*
* Descripción: Valida la cadena indicando cuando existen caracteres	*
*				no permitidos: '  "  <  >  \						*
* Comentarios: 														*
*********************************************************************/
function fncValidarCaracteresEspeciales(strCadena) {
	return (strCadena.indexOf("\'") == -1) 
			&& (strCadena.indexOf("\"") == -1) 
			&& (strCadena.indexOf("<") == -1)
			&& (strCadena.indexOf(">") == -1) 
			&& (strCadena.indexOf("\\") == -1);
}


/********************************************************************
* Nombre: fncValidarEmail()											*
* Autor: CREAVISION Digital											*
* Argumentos:	strEmail (Cadena) --> Cadena con el email a validar	*
* Resultado: Verdadero en caso de validacion correcta. Falso en 	*
*				caso contrario										*
* Descripción: Valida el formato del email introducido				*
* Comentarios: 														*
*********************************************************************/
function fncValidarEmail(strEmail) {
	return strEmail.match(/^.+\@.+\..+$/);
}
	
	
/********************************************************************
* Nombre: fncEsNumero()												*
* Autor: CREAVISION Digital											*
* Argumentos:	strCadena (Cadena) --> Cadena con el numero a 		*
*										comprobar					*
* Resultado: Verdadero en caso de comprobacion correcta. Falso en 	*
*				caso contrario										*
* Descripción: Valida si todos los caracteres de la cadena pasada 	*
*				son numeros											*
* Comentarios: 														*
*********************************************************************/
function fncEsNumero(strCadena) {
	if (typeof(strCadena) != "string"){
		return false;
	}
	
	if (strCadena == "") {
		return false;
	}
	else {
		//Si es un numero negativo, tambien es valido
		if (strCadena.charAt(0) == "-") {
			strCadena = strCadena.substring(1);
		}
	
		for (i=0;i<strCadena.length;i++) {
			if((strCadena.charCodeAt(i)<48)||(strCadena.charCodeAt(i)>57)) {
				return false;
			}
		}
		return true;
	}
}	

/********************************************************************
* Nombre: fncEntre2Numeros()										*
* Autor: CREAVISION Digital											*
* Argumentos:	intNumero (Entero) --> Numero a comprobar			*
*				intMaximo (Entero) --> Limite maximo				*
*				intMinimo (Entero) --> Limite minimo				*
* Resultado: Verdadero en caso de comprobacion correcta. Falso en 	*
*				caso contrario										*
* Descripción: Comprueba que el número que se le pasa esta dentro 	*
*				de los límites										*
* Comentarios: 														*
*********************************************************************/
function fncEntre2Numeros(intNumero, intMaximo, intMinimo) {
	if ((intNumero > intMinimo) && (intNumero < intMaximo)) {
		return true;
	}
	else {
		return false;
	}
}


/********************************************************************
* Nombre: fncObtenerDigitoControl()									*
* Autor: CREAVISION Digital											*
* Argumentos:	strCadena (Cadena) --> Cadena a tratar				*
* Resultado: Entero con el digito de control						*
* Descripción: Obtiene el digito de control del numero de cuenta de	*
*				10 digitos que se ha pasado							*
* Comentarios: 														*
*********************************************************************/
function fncObtenerDigitoControl(strCadena) {
var arrValores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
var intControl = 0;
	
	for (i=0; i<=9; i++)
		intControl += parseInt(strCadena.charAt(i)) * arrValores[i];
	intControl = 11 - (intControl % 11);
	if (intControl == 11) intControl = 0;
	else if (intControl == 10) intControl = 1;
	return intControl;
}


/********************************************************************
* Nombre: fncValidarNumCuenta()										*
* Autor: CREAVISION Digital											*
* Argumentos:	objEntidad (Objeto) --> Objeto de formulario con la *
*								cadena correspondiente a la entidad	*
*				objSucursal (Objeto) --> Objeto de formulario con	*
*							la cadena correspondiente a la sucursal	*
*				objControl (Objeto) --> Objeto de formulario con la *
*								cadena correspondiente al DC		*
*				objCuenta (Objeto) --> Objeto de formulario con la	*
*								cadena correspondiente a la cuenta	*
* Resultado: Verdadero o falso segun el resultado de la validacion	*
* Descripción: Valida si el numero de cuenta almacenado en los 		*
*				objeto pasados es correcto (longitud, tipo, etc.)	*
* Comentarios: 														*
*********************************************************************/
function fncValidarNumCuenta(objEntidad, objSucursal, objControl, objCuenta) {
	if (objEntidad.value == "") { 
		alert("Debes introducir la entidad del número de cuenta de la empresa");
		objEntidad.focus();
		return false;
	}
	if (objEntidad.value.length != 4) { 
		alert("La entidad del número de cuenta introducida no es correcta");
		objEntidad.focus();
		objEntidad.select();
		return false;
	}
	if (!fncEsNumero(objEntidad.value)) { 
		alert("La entidad del número de cuenta introducida no es correcta");
		objEntidad.focus();
		objEntidad.select();
		return false;
	}
	if (objSucursal.value == "") { 
		alert("Debes introducir la sucursal del número de cuenta de la empresa");
		objSucursal.focus();
		return false;
	}
	if (objSucursal.value.length != 4) { 
		alert("La sucursal del número de cuenta introducida no es correcta");
		objSucursal.focus();
		objSucursal.select();
		return false;
	}
	if (!fncEsNumero(objSucursal.value)) { 
		alert("La sucursal del número de cuenta introducida no es correcta");
		objSucursal.focus();
		objSucursal.select();
		return false;
	}
	if (objControl.value == "") { 
		alert("Debes introducir el dígito de control del número de cuenta de la empresa");
		objControl.focus();
		return false;
	}
	if (objControl.value.length != 2) { 
		alert("El dígito de control del número de cuenta introducido no es correcto");
		objControl.focus();
		objControl.select();
		return false;
	}
	if (!fncEsNumero(objControl.value)) { 
		alert("El dígito de control del número de cuenta introducido no es correcto");
		objControl.focus();
		objControl.select();
		return false;
	}
	if (objCuenta.value == "") { 
		alert("Debes introducir la cuenta del número de cuenta de la empresa");
		objCuenta.focus();
		return false;
	}
	if (objCuenta.value.length != 10) { 
		alert("El código de cuenta del número de cuenta introducido no es correcto");
		objCuenta.focus();
		objCuenta.select();
		return false;
	}
	if (!fncEsNumero(objCuenta.value)) { 
		alert("El código de cuenta del número de cuenta introducido no es correcto");
		objCuenta.focus();
		objCuenta.select();
		return false;
	}
	//Validacion del digito de control
	if (objControl.value != parseInt("" + fncObtenerDigitoControl("00" + objEntidad.value + objSucursal.value) + fncObtenerDigitoControl(objCuenta.value))) {
		alert("El dígito de control no coincide con los datos de la cuenta");
		objControl.focus();
		objControl.select();
		return false;
	}
	
	return true;
}


/********************************************************************
* Nombre: fncValidarNif()											*
* Autor: CREAVISION Digital											*
* Argumentos:	objNif (Objeto) --> Objeto de formulario con la 	*
*								cadena a validar					*
* Resultado: Verdadero o falso segun el resultado de la validacion	*
* Descripción: Valida si el nif introducido en el objeto pasado		*
*				es correcto (longitud, letra, etc.)					*
* Comentarios: 														*
*********************************************************************/
function fncValidarNif (objNif) {
var strNumerosNif = "";
var strLetraNif = "";
var arrComprobacion = new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","T");

	if (objNif.value != "") {
		if (objNif.value.length != 9)  {
			alert("El NIF debe tener 9 carateres");
			objNif.focus();
			objNif.select();
			return false;
		}
		
		strNumerosNif = fncQuitarCeros(objNif.value.substring(0,8));
		strLetraNif = objNif.value.substring(8,9);
		
		if (!fncEsNumero(strNumerosNif)) {
			alert("El formato del NIF no es correcto");
			objNif.focus();
			objNif.select();
			return false;
		}
		if (fncEsNumero(strLetraNif)) {
			alert("El formato del NIF no es correcto");
			objNif.focus();
			objNif.select();
			return false;
		}
		if (strLetraNif.toUpperCase() != arrComprobacion[(parseInt(strNumerosNif)%23)]) {
			alert("La letra del NIF no es correcta");
			objNif.focus();
			objNif.select();
			return false;
		}
	}
	
	return true;
}


/********************************************************************
* Nombre: fncValidarCif()											*
* Autor: CREAVISION Digital											*
* Argumentos:	objCif (Objeto) --> Objeto de formulario con la 	*
*								cadena a validar					*
* Resultado: Verdadero o falso segun el resultado de la validacion	*
* Descripción: Valida si el cif introducido en el objeto pasado		*
*				es correcto (longitud, control, etc.)				*
* Comentarios: 														*
*********************************************************************/
function fncValidarCif (objCif) {
var strLetraCif = "";
var strNumerosCif = "";
var strControlCif = "";
var intControl = 0; 
var arrComprobacion = new Array(0,2,4,6,8,1,3,5,7,9); 
var arrLetras = new Array("J","A","B","C","D","E","F","G","H","I");

	if (!/^[A-Za-z0-9]{9}$/.test(objCif.value.toUpperCase())) {
		alert("El CIF debe tener 9 carateres");
		objCif.focus();
		objCif.select();
		return false;
	}
    if (!/^[ABCDEFGHKLMNPQS]/.test(objCif.value.toUpperCase())) {
		alert("La primera letra del CIF no es correcta");
		objCif.focus();
		objCif.select();
		return false;
	}
	
	strLetraCif = objCif.value.substring(0,1);
	strNumerosCif = objCif.value.substring(1,8);
	strControlCif = objCif.value.toUpperCase().substring(8,9);
	
	if (!fncEsNumero(strNumerosCif)) {
		alert("El formato del CIF no es correcto");
		objCif.focus();
		objCif.select();
		return false;
	}

	for(i=2; i<=6; i+=2) {
      intControl += arrComprobacion[parseInt(objCif.value.substr(i-1,1))];
      intControl += parseInt(objCif.value.substr(i,1));
    }
    intControl += arrComprobacion[parseInt(objCif.value.substr(7,1))];
    intControl = (10-(intControl%10));
	if(intControl == 10) {
		intControl = 0;
	}

	if ((strControlCif != intControl) && (strControlCif != arrLetras[intControl])) {
		alert("El dígito de control del CIF no es correcto");
		objCif.focus();
		objCif.select();
		return false;
	}

	return true;
}


/********************************************************************
* Nombre: fncQuitarCeros()											*
* Autor: CREAVISION Digital											*
* Argumentos:	strNumero (Cadena) --> Cadena a tratar				*
* Resultado: Cadena tratada											*
* Descripción: Elimina los ceros al principio en la cadena pasada	*
* Comentarios: 														*
*********************************************************************/
function fncQuitarCeros(strNumero) {
	for (i=0; i<strNumero.length;i++) {
		if (strNumero.charAt(i) != "0") {
			return strNumero.substring(i);
		}
	}
}
 -->
