//____________________________________________________________________
//muestro el formulario de crear usuario al pulsar el botón
//accion=1 muestra
//accion=0 oculta
function mostrarCrearUsuario(accion){
	var div,botonCrear;
	div = document.getElementById("creaUsuarios");
	botonCrear = document.getElementById("botonCrearUsuario");	
	if (accion==1){
		div.style.display = "block";	
		botonCrear.style.display = "none";	
		}
	else{
		div.style.display = "none";	
		botonCrear.style.display = "block";	
		}
}
//____________________________________________________________________
//muestro el campo empresa solo si el tipo de usuario es cliente
//accion=1 muestra
//accion=0 oculta
function mostrarEmpresa(accion){
	var lista,empresaLabel,empresaForm;
	
	lista = document.getElementById("tipoUsuarioForm");
	empresaLabel = document.getElementById("divEmpresaLabel");
	empresaForm = document.getElementById("divEmpresaForm");
	
	if(lista.value==3){
		empresaLabel.style.display = "block";
		empresaForm.style.display = "block";
	}
	else{
		empresaLabel.style.display = "none";
		empresaForm.style.display = "none";
	}
}
//____________________________________________________________________
//filtra los campos de entrada
function filtrarAltaUsuario(){
	var login,pass,nombre,empresa,email,caracterestipo;
	var submitOK = true;
	
	login = document.getElementById("loginForm");
	pass = document.getElementById("passwordForm");
	nombre = document.getElementById("nombreForm");
	empresa= document.getElementById("empresaForm");
	email = document.getElementById("emailForm");
	tipo = document.getElementById("tipoUsuarioForm");
	
	var caracteres = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789áéíóúüÜÁÉÍÓÚçÇ.,-_()&:@";
	//valido login
	if(!validarCampo(login,1,1,25,caracteres)){
	 	login.focus();
		submitOK=false;
		alert("El campo login no es correcto");
	 }else
	 //valido longitud password
	   if(pass != null && (pass.value.length<1 || nombre.value.length>45)){
					submitOK=false;		
					alert("El campo password no contiene una contraseña correcta");
	 }else
	 //valido longitud nombre
	   if(nombre.value.length<1 || nombre.value.length>50){
					submitOK=false;		
					alert("El campo nombre no contiene un nombre correcto");
	 }else
	  //valido email
	  if(!validarCampo(email,2,5,45,caracteres)){
	 	email.focus();
		submitOK=false;
		alert("El campo email no contiene un email correcto");
	} else
	 //valido longitud empresa
	 if(tipo.value==3){
	  if(empresa.value.length<1 || empresa.value.length>45){
					submitOK=false;		
					alert("El campo empresa no contiene una empresa correcta");
				}
		}
		
	 return submitOK;
	}


//____________________________________________________________________
//Validación genérica de un campo
function validarCampo(id,tipo,longMin,longMax,filtro){

	var submitOK=true;
	var i,numeroAux;
	var cadenaAux=id.value;
	
	switch (tipo){			
		case 1://tipo cadena alfanumerica				
				
				if(id.value.length<longMin || id.value.length>longMax){
					submitOK=false;							
				}
				for(i=0;i<id.value.length;i++){
					if(filtro.indexOf(id.value.charAt(i)) == -1){
						i=id.value.length;
						submitOK=false;
					}				
				}
				break;
				
		case 2://case email
			//expresion regular email
				var expresionEmail = RegExp(/^([a-zA-Z0-9])+((\.|-|_)[a-zA-Z0-9]+)*@[a-zA-Z0-9]+((\.|-|_)[a-zA-Z0-9]+)*\.[a-zA-Z0-9]+$/);
				if(!expresionEmail.test(id.value)){
					submitOK=false;
				}else
							
			//compruebo longitud
			if(id.value.length<longMin || id.value.length>longMax){
					submitOK=false;	
				}	
				/*
			//compruebo caracteres del email	
			for(i=0;i<id.value.length;i++){
					if( id.value.charAt(i) !='@' && id.value.charAt(i) !='.' && filtro.indexOf(id.value.charAt(i)) == -1){
						i=id.value.length;
						submitOK=false;
					}		
			}		*/
			
					
			break;
	}	

return submitOK;
}

//____________________________________________________________________
//mensaje error login
function mensajeError(mensaje){
	alert(mensaje);
}

//____________________________________________________________________
// Funcion que oculta (divOcultar) y muestra (divMostrar) un div
function cambiarDiv(divMostrar, divOcultar){
	
	//Ocultamos el div
	var ocultar = document.getElementById(divOcultar);
	ocultar.style.display='none';
	
	//Mostramos el div
	var mostrar = document.getElementById(divMostrar);
	mostrar.style.display='block';
	return true;
}

function holagloria(){
	alert('hola');
}

//___________________________________________________________________
//Funcion que valida que las claves de cambiar claves son igules y tienen un tamaño minimo.
function comprobarClaves(){
	var clave1 = document.getElementById('email').value
	var submitOK = false;
	
	if (clave1 == clave2){
	 	if ((clave1.length > 5) && (clave2.length > 5)){
			submitOK = true;
		}else{
			alert("El tamaño de las claves ha de ser mayor de 5.");
		}
	}else{
		alert("Las claves no coinciden.");
	}
	
	return submitOK;
}

//____________________________________________________________________
//Funcion que pide confirmacion de querer borrar un usuario
function confirmarOperacion(mensaje){
	var confirmado;
	if (confirm(mensaje)){
		confirmado = true;
	} else {
		confirmado = false;
	}
	
	return confirmado;
}

//____________________________________________________________________
//Funcion que pide confirmacion de querer borrar un usuario
function comprobarEmail(){
	var email = document.getElementById('email')
	var submitOK = true;
	var caracteres = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789áéíóúÁÉÍÓÚçÇ.,-_@";
	
  	if(!validarCampo(email,2,5,45,caracteres)){
	 	email.focus();
		submitOK=false;
		alert("El campo email no contiene un email correcto");
	}
	
	return submitOK;
}
//Funcion que comprueba ciertas secuencias de palabras que penalizan en una contrasena.
//Por cada patron penalizable que encuentra se descuenta un punto en la contrasena.
//La funcion recibe:
//	password: Password que se esta evaluando.
//	usuario: Nombre de usuario que esta construyendo el password.
//	puntuacion: Puntuacion obtenida hasta el momento por el password.
//La funcion devuelve:
//	puntuacion: El valor de la puntuacion despues de descontar las penalizaciones.
function compruebaPalabras(password, usuario, puntuacion){


	var expUsuario = new RegExp(usuario);
	var fecha = new RegExp('([012][1-9]|3[01])(/|-)(0[1-9]|1[012])\\2(\\d{4})$');
	var NIF= new RegExp('\\d{8}[A-Z]');
	var punt = puntuacion;
	var i, secuencia, tam;
	
	//Penalizaciones:
	//Si el password contiene el nombre del usuario
	if (expUsuario.test(password) && (puntuacion>0) && usuario.length!=0){
		punt--;
	}
	//Si el password contiene claramente una fecha
	if (fecha.test(password) && puntuacion>0){ 
		punt--;
	}
	//Si el password contiene un NIF
	if (NIF.test(password) && puntuacion>0){
		punt--;
	}
	
	//secuencias de teclado conocidas
	secuencias = new Array(7);
	secuencias[0] = "asd";
	secuencias[1] = "ñlk";
	secuencias[2] = "qwerty";
	secuencias[3] = "clave";
	secuencias[4] = "password";
	secuencias[5] = "pass";
	secuencias[6] = "admin";
	
	tam = secuencias.length;
	i = 0;
	while(i < tam && punt > 0){
		secuencia = new RegExp(secuencias[i]);
		if(secuencia.test(password)){
			punt--;
		}
		i++;
	}
	
	return punt;
}
//----------------------------------------------------------------------------------------------
//Funcion que evalua un password segun el tipo de caracteres que contiene,
//Otorgandole una puntuacion comprendida entre 0 y 6, siendo el significado de las puntuaciones:
//	[0] = 'Insuficiente';
//	[1] = 'Muy Debil';
//	[2] = 'Debil';
//	[3] = 'Normal';
//	[4] = 'Fuerte';
//	[5] = 'Muy fuerte';
//	[6] = 'Optima';
//La funcion recibe:
//	'password: Password que se va a evaluar.
//	'usuario: Nombre del usuario que esta construyendo el password.

//La funcion modifica el codigo html que pinta el medidor del Password y que se obtiene
//llamando a la funcion asp: pintaMedidor()

function evaluaPassword(password, usuario){

	//Leemos las variables que se necesitan
	var passwd = document.getElementById(password).value;
	var user = document.getElementById(usuario).value;
	var barrita = document.getElementById('barraPuntuacion');
	var mensaje = document.getElementById('mensaje');
	
	//Construimos expresiones regulares para:
	var mayusc = new RegExp('[A-Z]'); //Letras Mayusculas
	var minusc = new RegExp('[a-z]'); //Letras Minusculas
	var num = new RegExp ('\\d'); //Numeros
	var noalfaNum = new RegExp('[^A-Za-z0-9_ñ]'); //Caracteres no alfanumericos
	
	var puntuacion = 0;

	//Array para los colores
	colores = new Array(6);
	colores[0] = '#aa0033';
	colores[1] = '#aa0033';
	colores[2] = '#ffcc33';
	colores[3] = '#ffcc33';
	colores[4] = '#6699cc';
	colores[5] = '#6699cc';
	colores[6] = '#008000';
	
	//tamano de la barrita
	tamano = new Array(6);
	tamano[0] = '25px;';
	tamano[1] = '50px';
	tamano[2] = '75px';
	tamano[3] = '100px';
	tamano[4] = '125px';
	tamano[5] = '150px';
	tamano[6] = '175px';

	//mensajes que se muestran
	mensajes = new Array(6);
	mensajes[0] = 'Insuficiente';
	mensajes[1] = 'Muy d&eacute;bil';
	mensajes[2] = 'D&eacute;bil';
	mensajes[3] = 'Normal';
	mensajes[4] = 'Fuerte';
	mensajes[5] = 'Muy fuerte';
	mensajes[6] = '&Oacute;ptima';
	
	//longitud > 8
	if (passwd.length >= 8){
		puntuacion++;
		if (passwd.length >= 10){
			puntuacion++;
		}
	}
		
	//Si el password tiene longitud mayor o igual que 5 incrementamos en los siguientes casos:
	if (passwd.length >= 5){
		//Contiene mayusculas
		if(mayusc.test(passwd)){
			puntuacion++;
		}
		//Contiene minusculas
		if(minusc.test(passwd)){
			puntuacion++;
		}
		//Contiene numeros
		if(num.test(passwd)){
			puntuacion++;
		}
		//contiene caracteres no alfanumericos
		if(noalfaNum.test(passwd)){
			puntuacion++;
		}
	}
	
	puntuacion = compruebaPalabras(passwd, user, puntuacion);
	
	//document.forms['form'].elements['puntuacion'].value=puntuacion;
	if (passwd.length == 0){
		barrita.style.backgroundColor='#dddddd';
		mensaje.style.color='#C0C0C0';
		mensaje.innerHTML="Sin Determinar";
	}else{	
		barrita.style.backgroundColor = colores[puntuacion];
		barrita.style.width = parseInt(tamano[puntuacion]);
		mensaje.style.color = colores[puntuacion];
		mensaje.innerHTML=mensajes[puntuacion];
	}
	
}

//____________________________________________________________________________
//Funcion que mediante AJAX guarda en una variable de session si el usuario debe
//recibir un mensaje de aviso cuando se suban documentos a su carpeta.
function enviarCorreoAvisoArchivos(){
	//Checkbox de si debemos enviar o no un correo
	var enviarCorreo = document.getElementById("enviarCorreoAviso").checked;
	//Carpeta a la que se esta subiendo los archivos, es necesario porque se crea una variable de
	//session por cada carpeta a la que estemos subiendo documentos
	var carpeta = document.getElementById("carpetaEnviarCorreoAviso").value;
	
	new Ajax.Request(
		'/extranet/enviarCorreoAviso.asp?enviarAviso=' + enviarCorreo + '&carpeta=' + carpeta, {
		 method: 'get',
		//Si la subida se ha realizado correctamente, mostramos un mensaje si vamos a enviar o no un aviso	
		onSuccess: function(response) {
		   	if (enviarCorreo){
				alert("Se enviará un correo de aviso.");
			}else{
				alert("No se enviará un correo de aviso.");
			}
	  	},
		
		//Si la operacion no se ha relizado correctamente, restauramos el valor anterior
		onFailure: function(response) {
		   	if (enviarCorreo){
				document.getElementById("enviarCorreoAviso").checked = false;
			}else{
				document.getElementById("enviarCorreoAviso").checked = true;
			}
	  	}
	});
}




//___________________________________________________________________
//Función que controla los campos del formulario de contacto
function controlFormularioContacto(){
	
	var submitOk=true;
	
	var nombre = document.getElementById("nombre");
	var mensaje = document.getElementById("mensaje");
	var email = document.getElementById("email");
	var telefono = document.getElementById("telefono");

	if(nombre.value.length <1){
	 	nombre.focus();
		submitOk=false;
		alert("El nombre no puede estar vac\xedo");
	 }else if(mensaje.value.length<1){
	 	mensaje.focus();
		submitOk=false;
		alert("El mensaje no puede estar vac\xedo");
	}else if(email.value.length<1 &&telefono.value.length<1){
	 	email.focus();
		submitOk=false;
		alert("Debe dejar un email o un tel\xe9fono de contacto");
	 }else if(email.value.length>0 && !validarCampo(email,2,5,45,"")){
	 	email.focus();
		submitOk=false;
		alert("El campo email no contiene un email correcto");
	 }
	 
	 return submitOk;
}
