$(document).ready(function(){
	//variables globales
	var searchBoxes = $(".text");
	var inputUsername = $("#nombres");
	var reqUsername = $("#req-nombres");
	var inputLastname = $("#apellidos");
	var reqLastname = $("#req-apellidos");	
	var inputPassword1 = $("#password");
	var reqPassword1 = $("#req-password");
	var inputPassword2 = $("#password2");
	var reqPassword2 = $("#req-password2");
	var inputEmail = $("#correo");
	var reqEmail = $("#req-correo");
	var selectSexo = $("#sexo");
	var reqSexo = $("#req-sexo");
	var selectDia = $("#dia");
	var selectMes = $("#mes");
	var selectAño = $("#año");
	var reqDia = $("#req-dia");	
	var reqMes = $("#req-mes");	
	var reqAño = $("#req-año");	
	var inputCodigoReset = $("#codigoReset");
	var reqCodigoReset = $("#req-codigoReset");
	var error = $("#error");
	var inputNick = $("#nick");
	var reqNick = $("#req-nick");
	var inputComentario = $("#ag_comentario");
	var reqComentario = $("#req-comentario");

	//funciones de validacion
	function validateUsername(){
		//NO cumple longitud minima
		if(inputUsername.val().length < 3){
			reqUsername.addClass("error");
			inputUsername.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres A-z
		else if(!inputUsername.val().match(/^[a-zA-Z ]+$/)){
			reqUsername.addClass("error");
			inputUsername.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres A-z
		else{
			reqUsername.removeClass("error");
			inputUsername.removeClass("error");
			return true;
		}
	}
	function validateLastname(){
		//NO cumple longitud minima
		if(inputLastname.val().length < 3){
			reqLastname.addClass("error");
			inputLastname.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres A-z
		else if(!inputLastname.val().match(/^[a-zA-Z ]+$/)){
			reqLastname.addClass("error");
			inputLastname.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres A-z
		else{
			reqLastname.removeClass("error");
			inputLastname.removeClass("error");
			return true;
		}
	}	
	function validatePassword1(){
		//NO tiene minimo de 5 caracteres o mas de 12 caracteres
		if(inputPassword1.val().length < 4 || inputPassword1.val().length > 32){
			error.html("Error Pass");			
			reqPassword1.addClass("error");
			inputPassword1.addClass("error");
			return false;
		}
		// SI longitud, NO VALIDO numeros y letras
		else if(!inputPassword1.val().match(/^[0-9a-zA-Z-_]+$/)){
			error.html("Error Pass");			
			reqPassword1.addClass("error");
			inputPassword1.addClass("error");
			return false;
		}
		// SI rellenado, SI email valido
		else{
			error.html("");						
			reqPassword1.removeClass("error");
			inputPassword1.removeClass("error");
			return true;
		}
	}
	function validatePasswordMD5(){
		//32 caracteres
		if(inputPassword1.val().length != 32){
			error.html("Error Pass");			
			reqPassword1.addClass("error");
			inputPassword1.addClass("error");
			return false;
		}
		// SI longitud, NO VALIDO numeros y letras
		else if(!inputPassword1.val().match(/^[0-9a-zA-Z]+$/)){
			error.html("Error Pass");			
			reqPassword1.addClass("error");
			inputPassword1.addClass("error");
			return false;
		}
		// SI rellenado, SI email valido
		else{
			error.html("");						
			reqPassword1.removeClass("error");
			inputPassword1.removeClass("error");
			return true;
		}
	}
	function validatePassword2(){
		//NO son iguales las password
		if(inputPassword1.val() != inputPassword2.val()){
			reqPassword2.addClass("error");
			inputPassword2.addClass("error");
			return false;
		}
		// SI son iguales
		else{
			reqPassword2.removeClass("error");
			inputPassword2.removeClass("error");
			return true;
		}
	}
	function validateEmail(){
		//NO hay nada escrito
		if(inputEmail.val().length == 0){
			error.html("Error Correo");
			reqEmail.addClass("error");
			inputEmail.addClass("error");
			return false;
		}
		// SI escrito, NO VALIDO email
		else if(!inputEmail.val().match(/^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i)){
			error.html("Error Correo");
			reqEmail.addClass("error");
			inputEmail.addClass("error");
			return false;
		}
		// SI rellenado, SI email valido
		else{
			error.html("");
			reqEmail.removeClass("error");
			inputEmail.removeClass("error");
			return true;
		}
	}
	function validateSexo(){
		//NO seleccionado
		if(selectSexo.val() == 0){
			reqSexo.addClass("error");
			selectSexo.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres M ó H
		else if(!selectSexo.val().match(/^[HM]+$/)){
			reqSexo.addClass("error");
			selectSexo.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres M ó H
		else{
			reqSexo.removeClass("error");
			selectSexo.removeClass("error");
			return true;
		}
	}
	function validateDia(){
		//NO seleccionado
		if(selectDia.val() == 0){
			reqDia.addClass("error");
			selectDia.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres 0-9
		else if(!selectDia.val().match(/^[0-9]+$/)){
			reqDia.addClass("error");
			selectDia.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres M ó H
		else{
			reqDia.removeClass("error");
			selectDia.removeClass("error");
			return true;
		}
	}
	function validateMes(){
		//NO seleccionado
		if(selectMes.val() == 0){
			reqMes.addClass("error");
			selectMes.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres 0-9
		else if(!selectMes.val().match(/^[0-9]+$/)){
			reqMes.addClass("error");
			selectMes.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres M ó H
		else{
			reqMes.removeClass("error");
			selectMes.removeClass("error");
			return true;
		}
	}
	function validateAño(){
		//NO seleccionado
		if(selectAño.val() == 0){
			reqAño.addClass("error");
			selectAño.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres 0-9
		else if(!selectAño.val().match(/^[0-9]+$/)){
			reqAño.addClass("error");
			selectAño.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres M ó H
		else{
			reqAño.removeClass("error");
			selectAño.removeClass("error");
			return true;
		}
	}
	function validateCodigoReset(){
		//NO hay nada escrito
		if(inputCodigoReset.val().length == 0){
			error.html("Error Correo");
			reqCodigoReset.addClass("error");
			inputCodigoReset.addClass("error");
			return false;
		}
		// SI escrito, NO VALIDO
		else if(!inputCodigoReset.val().match(/^[0-9a-zA-Z]+$/)){
			error.html("Error Correo");
			reqCodigoReset.addClass("error");
			inputCodigoReset.addClass("error");
			return false;
		}
		// SI rellenado, SI valido
		else{
			error.html("");
			reqCodigoReset.removeClass("error");
			inputCodigoReset.removeClass("error");
			return true;
		}
	}
	function validateNick(){
		//NO cumple longitud minima
		if(inputNick.val().length < 3){
			reqNick.addClass("error");
			inputNick.addClass("error");
			return false;
		}
		//SI longitud pero NO solo caracteres A-z
		else if(!inputNick.val().match(/^[a-zA-Z ]+$/)){
			reqNick.addClass("error");
			inputNick.addClass("error");
			return false;
		}
		// SI longitud, SI caracteres A-z
		else{
			reqNick.removeClass("error");
			inputNick.removeClass("error");
			return true;
		}
	}
	function validateComentario(){
		if(inputComentario.val().length < 1 || inputComentario.val().length > 255){
			reqComentario.addClass("error");
			inputComentario.addClass("error");
			return false;
		}
		// SI escrito, NO VALIDO
		/*else if(!inputComentario.val().match(/^([a-z]|[A-Z]|[0-9]|[!¡,.;():º'"\*\-\?\¿\=_]|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ñ|ü|\s)*$/)){*/
		/*else if(!inputComentario.val().match(/^([a-z]|[A-Z]|[0-9]|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ñ|ü|\s)*$/)){*/
		else if(!inputComentario.val().match(/^([a-z]|[A-Z]|[0-9]|[-_=¿?¡!,.;:()*]|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ñ|Ñ|\s)*$/)){
			reqComentario.addClass("error");
			inputComentario.addClass("error");
			return false;
		}
		// SI rellenado, SI valido
		else{
			reqComentario.removeClass("error");
			inputComentario.removeClass("error");
			return true;
		}
	} 
	//controlamos la validacion en los distintos eventos
	// Perdida de foco
	inputUsername.blur(validateUsername);
	inputLastname.blur(validateLastname);	
	inputEmail.blur(validateEmail);
	inputPassword1.blur(validatePassword1);
	inputPassword2.blur(validatePassword2);
	selectSexo.blur(validateSexo);
	selectDia.blur(validateDia);
	selectMes.blur(validateMes);
	selectAño.blur(validateAño);
	inputCodigoReset.blur(validateCodigoReset);	
	inputNick.blur(validateNick);
	
	// Pulsacion de tecla
	//inputEmail.keyup(validateEmail);
	//inputPassword1.keyup(validatePassword1);
	inputUsername.keyup(validateUsername);
	inputLastname.keyup(validateLastname);
	//inputPassword2.keyup(validatePassword2);
	inputComentario.keyup(validateComentario);	
	
	// Seleccionar
	selectSexo.change(validateSexo);
	selectDia.change(validateDia);
	selectMes.change(validateMes);
	selectAño.change(validateAño);
	
	//Prevencion del ENTER en formularios jquery
	inputEmail.keypress(function(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == '13') event.preventDefault();
	});
	inputCodigoReset.keypress(function(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == '13') event.preventDefault();
	});

	//hacer de esta manera para todos los formularios que no se quiera enter
	$("#form_nuevoPass").keypress(function(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == '13') event.preventDefault();
	});

	// Envio de formulario LOGIN NEWWWWWWWW
	$("#form_login_cc").submit(function(){
		if(validateEmail() & validatePassword1()){
			var pw = document.forms["form_login_cc"].elements["password"].value;
			var ale = document.forms["form_login_cc"].elements["aleatorio"].value;
			pw = hex_md5(pw);
			pw = hex_md5(hex_hmac_mdj(pw,ale));
			document.forms["form_login_cc"].elements["password"].value = pw;
			document.forms["form_login_cc"].elements["aleatorio"].value = ale;
			return true;
		}
		else
			return false;
	});

	// Envio de formulario LOGIN
	$("#form_login").submit(function(){
		if(validateEmail() & validatePassword1()){
			var pw = document.forms["form_login"].elements["password"].value;
			pw = hex_md5(pw);
			pw = hex_md5(hex_hmac_mdj(pw,aleatorio));
			document.forms["form_login"].elements["password"].value = pw;
			document.forms["form_login"].elements["aleatorio"].value = aleatorio;
			return true;
		}
		else
			return false;
	});
	
	// Envio de formulario REGISTRAR
	$("#form_registro").submit(function(){
		if(validatePassword1() & validateEmail() & validateLastname() & validateUsername() & validateSexo() & validateDia() & validateMes() & validateAño()) {
			var pw = document.forms["form_registro"].elements["password"].value;
			pw = hex_md5(pw);
			document.forms["form_registro"].elements["password"].value = pw;
			return true;
		}
		else
			return false;
	});

	// Envio de formulario RESETEO
	$("#form_reseteo").submit(function(){
		if(validateEmail()) 
			return true;
		else
			return false;
	});

	// Envio de formulario RESETEO - CODIGO
	$("#form_codReseteo").submit(function(){
		if(validateCodigoReset()) 
			return true;
		else
			return false;
	});
	
	// Envio de formulario RESETEO - NUEVO PASS
	$("#form_nuevoPass").submit(function(){
		if(validatePassword1() & validatePassword2()) {
			var pw = document.forms["form_nuevoPass"].elements["password"].value;
			pw = hex_md5(pw);
			document.forms["form_nuevoPass"].elements["password"].value = pw;
			document.forms["form_nuevoPass"].elements["password2"].value = pw;
			return true;
		}
		else
			return false;
	});
	
	// Envio de formulario PERFIL
	$("#form_perfil").submit(function(){
		if(validateNick() &validateLastname() & validateUsername() & validateSexo() & validateDia() & validateMes() & validateAño())
			return true;
		else
			return false;
	});
	
	// Envio de formulario AGREGAR - COMENTARIO
	$("#form_comentario").submit(function(){
		if(validateComentario()) 
			return true;
		else
			return false;
	});
	
	//controlamos el foco / perdida de foco para los input text
	searchBoxes.focus(function(){
		$(this).addClass("active");
	});
	searchBoxes.blur(function(){
		$(this).removeClass("active");  
	});

});
