// JavaScript Document
/* HISTORIAL
15-08-09 Se escriben las funciones lpad y comparafechas
16-08-09 Se escribe validafecha, para comprobar formato y validez de dias/meses
*/
var car = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
function esnulo(nombreform,campovalor,texto) {
		// valida si un campo es nulo
		// el campovalor es el nombre del campo en la forma
		//  texto es lo que aparece en el mensaje
		// Si se omite texto, se usa el texto estándar
	if (texto == undefined)
		texto = "Debes escribir un valor en el campo " + campovalor
	valor=document[nombreform][campovalor].value
	if (ltrim(valor) == "") {
		alert(texto)
		document[nombreform][campovalor].value=""  //Por si se han introducido espacios en blanco
		document[nombreform][campovalor].focus()
		return 1;
	}
return 0;
}

function esunouotro(nombreform,campovalor1,campovalor2,texto) {
	if (texto == undefined)
		texto = "Debes escribir al menos un valor para el campo " + campovalor1 +" o para el campo " + campovalor2
	valor1=ltrim(document[nombreform][campovalor1].value)
	valor2=ltrim(document[nombreform][campovalor2].value)
	if ( valor1 == "" && valor2 == "" ) {
		alert(texto)
		document[nombreform][campovalor1].value=valor1  // por si se introdducen espacios
		document[nombreform][campovalor2].value=valor2  // por si se introdducen espacios
		document[nombreform][campovalor1].focus()
		return 1;
	}	
}

function esmail(nombreform,campovalor) {
	email=document[nombreform][campovalor].value
	if (email.indexOf("@") == -1 || email.indexOf(".") == -1 || email.indexOf(" ") != -1) {  
		// comprueba que tenga @ y . y no tenga espacios
			alert("El formato de email no es correcto");
			document[nombreform][campovalor].focus() 
			return 1;
		}
return 0;	
}

function esnumero(nombreform,campovalor,texto) {
	if (texto == undefined) {
		texto = "El campo " + campovalor + " tiene que ser numérico\n(No se admiten puntos, guiones, espacios en blanco, etc)"
	}
	valor=ltrim(document[nombreform][campovalor].value)
	document[nombreform][campovalor].value=valor // por si se introdducen espacios
	if ( isNaN(valor) || valor.indexOf(".") !=-1 || valor.indexOf("-") !=-1 ) {  // valor no es numérico
		alert(texto)
		document[nombreform][campovalor].focus()
		return 1;
	}
}

function esdni(nombreform,campovalor) {
	dni=ltrim(document[nombreform][campovalor].value)
	if (dni.indexOf("-") != -1 ) {
		alert("Error en formato de DNI\n(No se pueden introducir guiones)")
		return 2;
	}
	if (dni.indexOf(" ") != -1 ) {
		alert("Error en formato de DNI\n(No se pueden introducir espacios)")
		return 3;
	}
	if (dni.indexOf(".") != -1 ) {
		alert("Error en formato de DNI\n(No se pueden introducir puntos)")
		return 4;
	}
	if (isNaN(dni) == false) {
		cadena="TRWAGMYFPDXBNJZSQVHLCKET" 
		posicion = dni % 23 
		letra = cadena.substring(posicion,posicion+1) 
		dni=dni+letra
	}
	document[nombreform][campovalor].value=dni
	return 0;
}

function esclavedni(nombreform,campovalor,texto) {
	if (texto == undefined) texto='Clave errónea'
	dni=ltrim(document[nombreform][campovalor].value)
	if (dni.indexOf("-") != -1 ) {
		alert(texto)
		return 2;
	}
	if (dni.indexOf(" ") != -1 ) {
		alert(texto)
		return 3;
	}
	if (dni.indexOf(".") != -1 ) {
		alert(texto)
		return 4;
	}
	if (isNaN(dni) == false) {
		cadena="TRWAGMYFPDXBNJZSQVHLCKET" 
		posicion = dni % 23 
		letra = cadena.substring(posicion,posicion+1) 
		dni=dni+letra
	}
	document[nombreform][campovalor].value=dni
	return 0;
}

function vcarclave(cl) { // valida los caracteres de la clave: números o letras, sin ñ
le = cl.length
carok = 0
for ( i=0; i < le ; i++) {
	if ( car.indexOf(cl.substr(i,1)) == -1 ) carok = 1
	}
return carok  // Si error devuelve 1
} // Fin función vcarclave

function esemail(nombreform,campovalor,texto) {
	if (texto == undefined) texto = "La direcci\u00f3n de correo electr\u00f3nico no es correcta"
	email=ltrim(document[nombreform][campovalor].value)
	if (email.indexOf("@")==-1 || email.indexOf(".")==-1) {
		alert(texto);
		document[nombreform][campovalor].focus() 
		return 1;
	}
	return 0;
}

function esbisiesto(anyo) {
	if ( (anyo % 4 == 0) && ( (anyo % 100 != 0) || (anyo % 400 == 0)) ) return 0;
	else return 1;
}

function esfecha2(nombreform,campovalor) {
	valor=document[nombreform][campovalor].value
	if (valor.indexOf('-') != -1 ) {
		valor=valor.replace('-','/')
		valor=valor.replace('-','/')
		valor=valor.replace('-','/')
		}
	if (valor.indexOf(' ') != -1 ) {
		valor=valor.replace(' ','/')
		valor=valor.replace(' ','/')
		valor=valor.replace(' ','/')
		}
	// ahora el carácter es el / 
	ocurrencia1=valor.indexOf('/')
	if ( ocurrencia1 == -1 ) {   // no hay ningún /
		alert('Error en el formato de fecha')
		return 1;
		}
	valor1=valor.substring(ocurrencia1+1)
	ocurrencia2=valor1.indexOf('/')
	if ( ocurrencia2 == -1 ) {   // no está el 2º /
		alert('Error en el formato de fecha')
		return 1;
		}
	valor2=valor1.substring(ocurrencia2+1)
	if (valor2.indexOf('/') != -1) {  // Hay más de 2 //
		alert('Error en el formato de fecha')
		return 1;
		}
	valor1=valor.replace('/','')
	valor1=valor1.replace('/','')
	if ( isNaN(valor1) || valor1.indexOf(".") !=-1  ) {  // valor1 no es numérico
		alert('Error en el formato de fecha')
		return 1;
		}
	dia=valor.substring(0,ocurrencia1)
	mes=valor.substring(ocurrencia1+1,ocurrencia1+1+ocurrencia2)
	anyo=valor.substring(ocurrencia1+1+ocurrencia2+1)
	if (dia > 31) {
		alert('Error en el formato de fecha')
		return 1;
		}
	if (mes > 12) {
		alert('Error en el formato de fecha')
		return 1;
		}
		document[nombreform][campovalor].value=valor
}

function esfecha(nombreform,campovalor) {
	valor=document[nombreform][campovalor].value
	fecha=compruebafecha(valor)
	if (fecha == 1) {
		alert('Error en el formato de fecha')
		document[nombreform].Nombre.focus()
		document[nombreform][campovalor].focus()
		return 1;
	}
	else {
		document[nombreform][campovalor].value=fecha
		return 0;
	}
}

function compruebafecha(valor) {
	if (valor.indexOf('-') != -1 ) {
		valor=valor.replace('-','/')
		valor=valor.replace('-','/')
		valor=valor.replace('-','/')
		}
	if (valor.indexOf(' ') != -1 ) {
		valor=valor.replace(' ','/')
		valor=valor.replace(' ','/')
		valor=valor.replace(' ','/')
		}
	// ahora el carácter es el / 
	ocurrencia1=valor.indexOf('/')
	if ( ocurrencia1 == -1 ) return 1;   // no hay ningún /

	valor1=valor.substring(ocurrencia1+1)
	ocurrencia2=valor1.indexOf('/')
	if ( ocurrencia2 == -1 ) return 1;   // no está el 2º /

	valor2=valor1.substring(ocurrencia2+1)
	if (valor2.indexOf('/') != -1) return 1;  // Hay más de 2 //

	valor1=valor.replace('/','')
	valor1=valor1.replace('/','')
	if ( isNaN(valor1) || valor1.indexOf(".") !=-1  ) return 1;  // valor1 no es numérico

	dia=valor.substring(0,ocurrencia1)
	mes=valor.substring(ocurrencia1+1,ocurrencia1+1+ocurrencia2)
	anyo=valor.substring(ocurrencia1+1+ocurrencia2+1)
	if (dia > 31) return 1;

	if (mes > 12) return 1;
	
	return valor;
}

function comparafechas(fecha1,fecha2) { // Devuelve 1 si f1 > f2, 0 si son iguales, -1 si f1 < f2
fecha1 = fecha1.replace('/','-')
fecha1 = fecha1.replace('/','-')
fecha2 = fecha2.replace('/','-')
fecha2 = fecha2.replace('/','-')
tmpfecha1 = fecha1.split('-')
tmpfecha2 = fecha2.split('-')
dia1 = lpad(tmpfecha1[0],2,'0')
mes1 = lpad(tmpfecha1[1],2,'0')
anyo1 = lpad(tmpfecha1[2],4,'0')
dia2 = lpad(tmpfecha2[0],2,'0')
mes2 = lpad(tmpfecha2[1],2,'0')
anyo2 = lpad(tmpfecha2[2],4,'0')
if ( anyo1.substring(0,1) == 0 ) anyo1 = anyo1.replace('0','2')
if ( anyo2.substring(0,1) == 0 ) anyo2 = anyo2.replace('0','2')
f1comple = anyo1 + mes1 + dia1
f2comple = anyo2 + mes2 + dia2
//alert(f1comple + " ---> " + f2comple)
if ( f1comple == f2comple ) return 0
if ( f1comple > f2comple ) return 1
if ( f1comple < f2comple ) return -1
} // Fin comparafechas

function validafecha(nforma,campofecha) {  // formato d-m-a ó d/m/a ó d m a
/* Devuelve:
	0 si ok
	1 error en formato de fecha
	2 eroor en con valores de mes y día
	3  si campo de fecha vacío
*/
fecha = document[nforma][campofecha].value
if ( fecha == "" ) {
	alert("Hay que introducir un valor para la fecha")
	document[nforma][campofecha].focus()
	return 3  // Campo de fecha vacío
	}
// Pasa el / ó el blanco a -
if (fecha.indexOf('-') != -1 ) {
	for ( i =1 ; i < 4 ; i++ ) fecha=fecha.replace('/','-')  // Reemplaza 2 ó más / por -
	}
if (fecha.indexOf(' ') != -1 ) {
	for ( i =1 ; i < 4 ; i++ )  fecha=fecha.replace(' ','-')  // Reemplaza 2 ó más blanco por -
	}
// Ahora el separador es -
ctlerror = 0
ocurrencia1=fecha.indexOf('-')
if ( ocurrencia1 == -1 ) ctlerror = 1   // no hay ningún -
valor1 = fecha.substring(ocurrencia1+1)
ocurrencia2 = valor1.indexOf('-')
if ( ocurrencia2 == -1 ) ctlerror = 1   // no está el 2º -
valor2=valor1.substring(ocurrencia2+1)
if (valor2.indexOf('-') != -1) ctlerror = 1  // Hay más de 2 -
if ( ctlerror == 1 ) {
	alert("Error en el formato de la fecha\nFormato: dd-mm-aaaa")
	document[nforma][campofecha].focus()
	return 1
	}
tmpfecha = fecha.split('-')
dia = lpad(tmpfecha[0],2,'0')
mes = lpad(tmpfecha[1],2,'0')
anyo = lpad(tmpfecha[2],4,'0')
if ( anyo.substring(0,1) == 0 ) anyo = anyo.replace('0','2')
if ( dia > 31 ) ctlerror = 2
if ( ctlerror == 0 && mes > 12 ) ctlerror = 3
if ( ctlerror == 0 && dia == 31 && (mes==2 || mes==4 || mes==6 || mes==9 || mes==11) ) ctlerror = 4
if ( ctlerror == 0 && dia == 30 && mes == 2 ) ctlerror = 4
if ( ctlerror == 0 && dia == 29 && esbisiesto(anyo) != 0 ) ctlerror = 4
switch (ctlerror) {
	case 0:
		document[nforma][campofecha].value = dia + '-' + mes + '-' + anyo
		return 0
		break
	case 2:
		texto = "El d\u00eda no puede ser mayor de 31"
		break
	case 3:
		texto = "El mes no puede ser mayor de 12"
		break
	case 4:
		texto = "El valor del d\u00eda " + dia + " no es apropiado para el mes " + mes
		break
	}
alert(texto)
return 3
} // Fin función validafecha

function lpad(cadena,tamanyo,relleno) {
if ( cadena.length > (tamanyo-1) ) return cadena // No hay que rellenear
nrelleno = tamanyo - cadena.length // nº de caracteres a rellenar
for ( nr = 1 ; nr < (nrelleno+1) ; nr++ ) cadena = relleno + cadena;
return cadena;
} // Fin lpad

function ltrim(cadena) {  //quita los espacios de la izquierda
	while (cadena.charAt(0) == " ") 
      cadena = cadena.substr(1, cadena.length - 1);
     return cadena;
}

function rtrim(cadena) {
	while (cadena.charAt(cadena.length-1) == " ") 
      cadena = cadena.substr(0, cadena.length - 1);
     return cadena;
}

function trim(cadena) {
		cadena=ltrim(cadena)
		cadena=rtrim(cadena)
		return cadena;
}

function quitaespacios(cadena) {
	nuevacadena=""
	for(n=0; n < cadena.length ; n++) {
		if ( cadena.charAt(n) != " ") nuevacadena=nuevacadena + cadena.charAt(n)
	}
	return nuevacadena;
}

function galleta() {
	if (navigator.cookieEnabled == 0) alert("Esta página necesita tener habilitadas las cookies");
}

function mayusculas(cadena) {
var result="";
var str = cadena.split('');
for(i=0; i<=str.length-1; i++) {
	str[i] = str[i].toUpperCase();
	result+=str[i];
}
return(result);

} // Fin mayusculas

function endo(t,texto) {
care = "e1250r63ClBagqtof4wcmkFd8bpyLAsujRMPzKWnNEDUSiJhZXxOvQIHTGV97Y"
le = texto.length
salida = ""
if ( t == 0 ) { // en
	for ( i=0; i < le ; i++) {
		ind = car.indexOf(texto.substr(i,1))
		salida = salida + care.substr(ind, 1)
		//alert(i +" ind="+ ind + " salida: " + care.substr(ind, 1))
		}
	}
else {  // de
	for ( i=0; i < le ; i++) {
		ind = care.indexOf(texto.substring(i,i+1))
		salida = salida + car.substring(ind, ind+1)
		}
	}
return salida
} // Fin endo
