
//--- INICIO --- Funciones para cambiar el color del elemento que tiene el foco
// Dentro de la etiqueta FORM incluir: onKeyUp="highlight(event)" onClick="highlight(event)"
var highlightcolor="#FFFFDD";

var ns6=document.getElementById&&!document.all;
var previous='';
var eventobj;

var intended=/INPUT|TEXTAREA|SELECT|OPTION/;

function checkel(which){
	if (which.style&&intended.test(which.tagName)){
		if (ns6&&eventobj.nodeType==3)
			eventobj=eventobj.parentNode.parentNode
			return true
	}
	else
		return false
}

function highlight(e){
	eventobj=ns6? e.target : event.srcElement
	if (previous!=''){
		if (checkel(previous))
			if (previous.type != "radio" && eventobj.disabled == false) { previous.style.backgroundColor='' }
			previous=eventobj
		//if (checkel(eventobj))
			//if (eventobj.type != "radio" && eventobj.disabled == false) { eventobj.style.backgroundColor=highlightcolor }
	}else{
		if (checkel(eventobj))
			if (eventobj.type != "radio" && eventobj.disabled == false) { eventobj.style.backgroundColor=highlightcolor }
			previous=eventobj
			//if (eventobj.type == "text") { eventobj.select() }
		}
}
//--- FIN ---


//--- INICIO --- Función genérica de validación de formularios
/* Incluir dentro de la página antes de la declaración de la función
	var camposObligatorios = Array("sNombre", "sApellidos");
	var nombreCampos = Array("Nombre", "Apellidos");
*/
function validarCampos(formulario){
	var mensaje = "\nDebe completar los siguientes campos:      \n\n";
	var longMensaje = mensaje.length;
	for (var i = 0; i < camposObligatorios.length; i++){
		var obj = formulario.elements[camposObligatorios[i]];
		if (obj){
			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					mensaje += "   - " + nombreCampos[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					mensaje += "   - " + nombreCampos[i] + "\n";
				}
				break;
			case "text":
			case "password":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					mensaje += "  -  " + nombreCampos[i] + "\n";
				}
				break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					mensaje += "   - " + nombreCampos[i] + "\n";
				}
			}
		}
	}
	if (mensaje.length == longMensaje){
		return true;
	}else{
		alert(mensaje);
		return false;
	}
}
//--- FIN ---


//--- INICIO --- Función para cambiar el foco pulsando Enter
// Dentro de cada campo incluir: onkeypress="return controlarEnter(this, event)"
function controlarEnter (field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
				i = (i + 1) % field.form.elements.length;
				field.form.elements[i].focus();
				return false;
	} 
	else
		return true;
}      
//--- FIN ---


//--- INICIO --- Funciones para restrigir el tipo de caracteres que se pueden introducir en un campo
// Dentro del campo en cuestion incluir: onKeyPress="soloNumeros()"  o  onKeyPress="soloNumerosLetras()"
function soloNumerosLetras(){
	var key=window.event.keyCode;
	if (key<48 || (key>57 && key < 65) || (key > 90 && key<97) || key>122){
		window.event.keyCode=0;
	}
}
function soloNumeros(){
	var key=window.event.keyCode;
	if (key<48 || key>57){
		window.event.keyCode=0;
	}
}
function soloNumerosDecimales(){
	var key=window.event.keyCode;
	if (key<48 || key>57){
		window.event.keyCode=0;
	}
	if (key==46 || key==44){
		if (document.getElementById(window.event.srcElement.id).value.indexOf(",") == -1){
			window.event.keyCode=44;
		}else{
			window.event.keyCode=0;
		}
	}
}
function soloCaracteres(sCaracteres){ // Solo permite escribir los caracteres pasados por parámetros
	var key=window.event.keyCode;
	var nLongitud = sCaracteres.length;
	var bValido = false
	for(var i=0; i<nLongitud; i++){
		if(sCaracteres.charCodeAt(i) == key){
			bValido = true;
			break;
		}
	}
	if(!bValido){window.event.keyCode=0}
}
//--- FIN ---


//--- INICIO --- Función para calcular la letra del DNI
function letraDNI(nif){
	var cadena = 'TRWAGMYFPDXBNJZSQVHLCKE';
	var nifnum = parseInt(nif, 10);
	var posicion = nifnum % 23;
	return cadena.charAt(posicion);
}
//--- FIN ---


//--- INICIO --- Función que comprueba si un año es bisiesto
function esBisiesto(anno){
	if (anno%4 == 0){
			if (anno%100 == 0 && anno%400 != 0){
				return false;
			}else{
				return true;
			}
	}else{
		return false;
	}
}
//--- FIN ---


//--- INICIO --- Función que comprueba si una dirección email tiene un formato válido (xxxxxxx@xxxxxx.xxx)
function validarEmail(email) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)){
		return (true)
	} else {
		return (false);
	}
}
//--- FIN ---


//--- INICIO --- Función que comprueba si una hora tiene formato hh:mm y la hora es válida
function validarHora(hora) {
	if (/((0[0-9]|1[0-9]|2[0-3]):[0-5][0-9])/.test(hora)){
		return (true)
	} else {
		return (false);
	}
}
//--- FIN ---

//--- INICIO --- Función que despliega un calendario para guardar una fecha en un campo de texto
function mostrarCalendario(campo){
	url = "../../funciones/Calendar.asp?dFecha=" + campo.value;
	ancho = 280;
	alto = 330;
	hor = (screen.width - ancho)/2;
	vert = (screen.height - alto)/2;
	propiedades = eval("'dialogHeight:" + alto + "px; dialogWidth:" + ancho + "px; dialogTop:" + vert + "px; dialogLeft:" + hor + "px; edge=raised; help=0; resizable=0; scroll=0; status=0'")
	fechaDevuelta = window.showModalDialog(url,"", propiedades);
	if (fechaDevuelta != undefined) {
		campo.value = fechaDevuelta;
	};
}
//--- FIN ---