function pruebajs(cuenta,valor1,valor2){
	alert("valor= "+ cuenta.value.substring(valor1.value,valor2.value));
}


/********************************************************************
* 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�: 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�: 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 {
		bolHayPunto = false;
		for (z=0;z<strCadena.length;z++) {
			if((strCadena.charCodeAt(z)<48)||(strCadena.charCodeAt(z)>57)) {
				if (strCadena.charAt(z) != ".") {
					return false;
				}
				else {
					if (bolHayPunto) {
						return false;
					}
					bolHayPunto = true;
				}
			}
		}
		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�: Comprueba que el nmero que se le pasa esta dentro 	*
*				de los l�ites										*
* 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�: 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�: Valida si el numero de cuenta almacenado en los 		*
*				objeto pasados es correcto (longitud, tipo, etc.)	*
* Comentarios: 														*
*********************************************************************/
function fncValidarNumCuenta(objEntidad, objSucursal, objControl, objCuenta) {
	//alert("entrada en la validación");
	if (objEntidad.value == "") {
		alert("Debes introducir la entidad del nmero de cuenta de la empresa");
		objEntidad.focus();
		return false;
	}
	if (objEntidad.value.length != 4) {
		alert("La entidad del nmero de cuenta introducida no es correcta");
		objEntidad.focus();
		objEntidad.select();
		return false;
	}
	if (!fncEsNumero(objEntidad.value)) {
		alert("La entidad del nmero de cuenta introducida no es correcta");
		objEntidad.focus();
		objEntidad.select();
		return false;
	}
	if (objSucursal.value == "") {
		alert("Debes introducir la sucursal del nmero de cuenta de la empresa");
		objSucursal.focus();
		return false;
	}
	if (objSucursal.value.length != 4) {
		alert("La sucursal del nmero de cuenta introducida no es correcta");
		objSucursal.focus();
		objSucursal.select();
		return false;
	}
	if (!fncEsNumero(objSucursal.value)) {
		alert("La sucursal del nmero de cuenta introducida no es correcta");
		objSucursal.focus();
		objSucursal.select();
		return false;
	}
	if (objControl.value == "") {
		alert("Debes introducir el d�ito de control del nmero de cuenta de la empresa");
		objControl.focus();
		return false;
	}
	if (objControl.value.length != 2) {
		alert("El d�ito de control del nmero de cuenta introducido no es correcto");
		objControl.focus();
		objControl.select();
		return false;
	}
	if (!fncEsNumero(objControl.value)) {
		alert("El d�ito de control del nmero de cuenta introducido no es correcto");
		objControl.focus();
		objControl.select();
		return false;
	}
	if (objCuenta.value == "") {
		alert("Debes introducir la cuenta del nmero de cuenta de la empresa");
		objCuenta.focus();
		return false;
	}
	if (objCuenta.value.length != 10) {
		alert("El c�igo de cuenta del nmero de cuenta introducido no es correcto");
		objCuenta.focus();
		objCuenta.select();
		return false;
	}
	if (!fncEsNumero(objCuenta.value)) {
		alert("El c�igo de cuenta del nmero de cuenta introducido no es correcto");
		objCuenta.focus();
		objCuenta.select();
		return false;
	}
	//Validacion del digito de control
	DC=parseInt("" + fncObtenerDigitoControl("00" + objEntidad.value + objSucursal.value) + fncObtenerDigitoControl(objCuenta.value));
	if (objControl.value !=DC) {
		alert("El cáculo de DC es: "+DC+" distinto de: "+objControl.value);
		objControl.focus();
		objControl.select();
		return false;
	}
	alert("Cuenta correcta");

	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�: 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.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�: 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");
	//alert("entrada");
	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�ito de control del CIF no es correcto");
		objCif.focus();
		objCif.select();
		return false;
	}
	alert("cif correcto");
	return true;
}


/********************************************************************
* Nombre: fncQuitarCeros()											*
* Autor: CREAVISION Digital											*
* Argumentos:	strNumero (Cadena) --> Cadena a tratar				*
* Resultado: Cadena tratada											*
* Descripci�: 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);
		}
	}
}


/********************************************************************
* Nombre: fncContarCaracteresAlfanumericos()						*
* Autor: CREAVISION Digital											*
* Argumentos:	strCadena (Cadena) --> Cadena a tratar				*
* Resultado: Cadena tratada											*
* Descripci�: Cuenta cuantos caracteres alfanumericos hay			*
* Comentarios: 														*
*********************************************************************/
function fncContarCaracteresAlfanumericos(strCadena) {
	intContador = 0;
	for (i=0; i<strCadena.length;i++) {
		if (strCadena.charAt(i) != " ") {
			intContador++;
		}
	}
	return intContador;
}
