// JavaScript Document

function hayMinusculas(p)
{
	var v = 'abcdefghijklmnopqrstuvwxyz';
	var l = 0;
	for (i = 0; i < p.length; i++)
		if (v.indexOf(p.charAt(i)) != -1) l+=1;
		
	return l;	
}

function hayMayusculas(p)
{
	var v = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var l = 0;
	for (i = 0; i < p.length; i++)
		if (v.indexOf(p.charAt(i)) != -1) l+=1;
		
	return l;
}

function hayNumeros(p)
{
	var v = '0123456789';
	var l = 0;
	for (i = 0; i < p.length; i++)
		if (v.indexOf(p.charAt(i)) != -1) l+=1;
		
	return l;
}

function haySimbolos(p)
{
	var v = "@#ñÑçÇ";
	var l = 0;
	for (i = 0; i < p.length; i++)
		if (v.indexOf(p.charAt(i)) != -1) l++;							
		
	return l;
}

function hayVocales(p)
{
	var v = 'aeiouAEIOU';
	var l = 0;
	for (i = 0; i < p.length; i++)
		if (v.indexOf(p.charAt(i)) != -1) l+=1;
		
	return l;
}

// maximo valor :  4
// minimo valor : -4

function passwordLevel (p){
  var l = 0;  
  var minusculas = hayMinusculas(p);
  var mayusculas = hayMayusculas(p);
  var numeros = hayNumeros(p);
  var simbolos = haySimbolos(p);
  var vocales = hayVocales(p);

  // 1: longitud entre valores
  // 0: fuera de valores (BAJA)
  if ((p.length >= 4) && (p.length <=10))
  {
	l++;
	//document.clau2.seguridadNula.style.visibility="hidden";				  	
	document.clau2.seguridadBaja.style.visibility="visible";
	document.clau2.seguridadMedia.style.visibility="visible";
	document.clau2.seguridadAlta.style.visibility="visible";
  }
  
  if (p.length < 4)
  {
	l = 0;
	eliminarSeguridad();
//		if ((6 - p.length) != 1)
		//document.clau2.seguridadNula.value='Le faltan '+ (6 - p.length)+' caracteres';
//		else
		//document.clau2.seguridadNula.value='Le falta '+ (6 - p.length)+' caracter';
	//document.clau2.seguridadNula.style.visibility="visible";
	//document.clau2.seguridadBaja.style.visibility="hidden";
	//document.clau2.seguridadMedia.style.visibility="hidden";
	//document.clau2.seguridadAlta.style.visibility="hidden";				  	
	return l;
  }
	
  if (p.length >=10)				 				  
	l++;


  
  // +0: un tipo
  // +1: dos tipos
  // +2: tres tipos
  // +3: cuatro tipos  
  // minusculas
  if (minusculas != 0)
  {  	
	// minusculas + mayusculas
	if (mayusculas != 0)
	{
		l++;
		// minusculas + mayusculas + numeros
		if(numeros != 0)
		{
			l++;
			// minusculas + mayusculas + numeros + simbolos
			if (simbolos != 0) 			
				l++;  			
		}
		// minusculas + mayusculas
		else 
		{ 		
			// minusculas +  mayusculas + simbolos
			if (simbolos != 0)
				l++;
		}  		
	}
	// minusculas
	else
	{
		// minusculas + numeros
		if(numeros != 0)
		{
			l++;
			// minusculas + numeros + simbolos
			if (simbolos != 0)
				l++;
		}
		// minusculas
		else
		{
			// minusculas + simbolos
			if (simbolos != 0)
				l++;	
		}  	
	}
  }
  else
  {
	// mayusculas
	if (mayusculas != 0)
	{
		l++;
		// mayusculas + numeros
		if(numeros != 0)
		{
			l++;
			// mayusculas + numeros + simbolos
			if (simbolos != 0) 			
				l++;  			
		}
		// mayusculas
		else 
		{ 		
			// mayusculas + simbolos
			if (simbolos != 0)
				l++;
		}  		
	}
	// nada
	else
	{
		// numeros
		if(numeros != 0)
		{
			l++;
			// numeros + simbolos
			if (simbolos != 0)
				l++;
		}
		// nada
		else
		{
			// simbolos
			if (simbolos != 0)
				l++;	
		}  	
	}
  }			  
	 
  // -1 si la contraseña está formada por un tipo
  if (minusculas == p.length)
	l--;
  if (mayusculas == p.length)
	l--;
  if (numeros == p.length)
	l--;
  if (simbolos == p.length)
	l--;
			
  //if (vocales == p.length)
  //	l--;
	
  // -1 si se supera un porcentaje en grupos pequeños
  if (vocales >= (p.length/2))
	l--;
  if (numeros >= (p.length/2))
	l--;		  

  mostrarSeguridad(l);
  return l; 
} 				

function eliminarSeguridad()
{
		  document.clau2.seguridadBaja.style.background="#DFDFDF";
		  document.clau2.seguridadBaja.style.color="#666666";
		  document.clau2.seguridadBaja.style.borderColor="#666666";
		  document.clau2.seguridadBaja.value="";
		  
		  document.clau2.seguridadMedia.style.background="#DFDFDF";
		  document.clau2.seguridadMedia.style.color="#666666";
		  document.clau2.seguridadMedia.style.borderColor="#666666";
		  document.clau2.seguridadMedia.value="";
		  
		  document.clau2.seguridadAlta.style.background="#DFDFDF";
		  document.clau2.seguridadAlta.style.color="#666666";
		  document.clau2.seguridadAlta.style.borderColor="#666666";
		  document.clau2.seguridadAlta.value="";
		  
		  return;						  						  				
}
function mostrarSeguridad(seguridad)
{
//		document.clau2.seguridadNula.style.visibility="hidden";				  	
	document.clau2.seguridadBaja.style.visibility="visible";
	document.clau2.seguridadMedia.style.visibility="visible";
	document.clau2.seguridadAlta.style.visibility="visible";				
	
  // Seguridad Baja
  if (seguridad <= 0)
  {
		  document.clau2.seguridadBaja.style.background="#FF9999";
		  document.clau2.seguridadBaja.style.color="#FF0000";
		  document.clau2.seguridadBaja.style.borderColor="#FF0000";
		  document.clau2.seguridadBaja.value="Baja";
  }
  else
  {
		  document.clau2.seguridadBaja.style.background="#DFDFDF";
		  document.clau2.seguridadBaja.style.color="#666666";
		  document.clau2.seguridadBaja.style.borderColor="#666666";
		  document.clau2.seguridadBaja.value="";
  }
	
  // Seguridad Media	
  if ((seguridad > 0) && (seguridad < 3))
  {
		  document.clau2.seguridadMedia.style.background="#FFFF9F";
		  document.clau2.seguridadMedia.style.color="#DFDF00";
		  document.clau2.seguridadMedia.style.borderColor="#DFDF00";
		  document.clau2.seguridadMedia.value="Media";
  }
  else
  {
		  document.clau2.seguridadMedia.style.background="#DFDFDF";
		  document.clau2.seguridadMedia.style.color="#666666";
		  document.clau2.seguridadMedia.style.borderColor="#666666";
		  document.clau2.seguridadMedia.value="";
  }
	
  // Seguridad Alta	
  if (seguridad >= 3)
  {
		  document.clau2.seguridadAlta.style.background="#A8FFA8";
		  document.clau2.seguridadAlta.style.color="#00A800";
		  document.clau2.seguridadAlta.style.borderColor="#00A800";
		  document.clau2.seguridadAlta.value="Alta";
  }
  else
  {
		  document.clau2.seguridadAlta.style.background="#DFDFDF";
		  document.clau2.seguridadAlta.style.color="#666666";
		  document.clau2.seguridadAlta.style.borderColor="#666666";
		  document.clau2.seguridadAlta.value="";
  }				
}
