/*-------ALERTAS-------*/

// Funcion que muestra la capa de alerta
function abreCapaAlerta() {

	// En funcion de si el usuario esta o no en sesion, se modifica levemente la 
	// capa de la alerta para pedir o no el correo electronico, ademas de la periodicidad
	// Esto se consigue intercambiando las clases "pequenyo" y "grande" y ocultando o 
	// mostrando la capa "divCorreo"
	if ( usuarioEnSesion() )
	{
		if ( $( "#formularioAlertas" ).is( ".formularioPisosAlertasGrande" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioPisosAlertasGrande" );
			$( "#formularioAlertas" ).addClass( "formularioPisosAlertasPequenio" );
		}
		else if ( $( "#formularioAlertas" ).is( ".formularioCochesAlertasGrande" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioCochesAlertasGrande" );
			$( "#formularioAlertas" ).addClass( "formularioCochesAlertasPequenio" );
		}
		else if ( $( "#formularioAlertas" ).is( ".formularioTrabajoAlertasGrande" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioTrabajoAlertasGrande" );
			$( "#formularioAlertas" ).addClass( "formularioTrabajoAlertasPequenio" );
		}
		$( "#divCorreo" ).hide();
	}
	else
	{
		if ( $( "#formularioAlertas" ).is( ".formularioPisosAlertasPequenio" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioPisosAlertasPequenio" );
			$( "#formularioAlertas" ).addClass( "formularioPisosAlertasGrande" );
		}
		else if ( $( "#formularioAlertas" ).is( ".formularioCochesAlertasPequenio" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioCochesAlertasPequenio" );
			$( "#formularioAlertas" ).addClass( "formularioCochesAlertasGrande" );
		}
		else if ( $( "#formularioAlertas" ).is( ".formularioTrabajoAlertasPequenio" ) )
		{	
			$( "#formularioAlertas" ).removeClass( "formularioTrabajoAlertasPequenio" );
			$( "#formularioAlertas" ).addClass( "formularioTrabajoAlertasGrande" );
		}
		$( "#divCorreo" ).show();
	}
	
	// Despues se muestra el formulario de la alerta, este el usuario en sesion o no
	// Primero se va haciendo visible visible la capa exterior, difuminadoAlerta
	$( "#difuminadoAlertas" ).fadeTo( 1, 0.0, function() {
		// Despues se muestra de forma rapida
		$( "#difuminadoAlertas" ).show( "fast", function (){
			// Despues se va ocultando hasta tener una opacidad de 0.8 sobre 1
			$( "#difuminadoAlertas" ).fadeTo( "slow", 0.8, function () {
				// Y luego se muestra de forma rapida la capa interior, formularioAlerta
				$( "#formularioAlertas" ).show( "fast" );
			});
		});
	});
}

// Funcion que cierra la capa de alerta
function cierraCapaAlerta() {
	// Primero se oculta de forma rapida la capa de alerta
	$( "#formularioAlertas" ).hide( "fast", function () {
		// Despues se va haciendo invisible la capa exterior, difuminadoAlerta
		$( "#difuminadoAlertas" ).fadeTo( "slow", 0.0, function () {
			// Y luego se oculta la capa de forma rapida
			$( "#difuminadoAlertas" ).hide( "fast" );
		});
	});
}

// Funcion que averigua si el usuario esta en sesion
// En el exito devuelve lo que nos de la llamada ajax. En caso de error devuelve falso
// La llamada no puede ser asincrona, debe esperarse 
// a que genere el valor para hacer el return 
function usuarioEnSesion() {
	var valADevolver = false;
	$.ajax({
		type: "POST",
      		url: "/www/mitula/alertas/usuarioEnSesion.jsp",
      		async: false,
      		success: function( data ) {
      			valADevolver = eval( data );
      		},
      		error: function() {
      			valADevolver = false;
      		}
   	});
   	return valADevolver;
}	

// Funcion que guarda una alerta
function guardarAlerta() {
	// Si el usuario esta en sesion o (no lo esta y el email es correcto) se ejecuta la llamada ajax
      	if ( usuarioEnSesion() || validaEmail( $( "#emailAl" ).val() ) )
      	{
      		var datas="textoBusqueda=" + $( "#textoBusquedaAl" ).val() + "&email=" + $( "#emailAl" ).val() + 
      				"&periodicidad=" + $( "[name='periodicidadAl']:checked" ).val();
      	
		$.ajax({
			type: "POST",
       		url: "/www/mitula/alertas/crearAlertaAjaxPorEmail.jsp",
       		data: datas,
       		dataType: "script",
       		success: function() {
       			alert( mensaje );
       		},
       		error: function() {
       			alert( "error" );
       		}
    	});
    	// Despues de ejecutar la llamada ajax, se cierra la capa de alerta
    	cierraCapaAlerta();
    }
    else 
    	alert("error");
}	

function validaEmail(cadena) {
  var cadenaComp1 = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  var cadenaComp2 = /^[A-Za-z0-9][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!cadenaComp1.test(cadena) || !cadenaComp2.test(cadena)) {
    return false;
  }
  return true;
}

/*-------FILTROS-------*/

function cerrarFiltros(){
	// Primero se oculta la capa de los filtros
	$( "#contFiltros" ).fadeOut( 500, 
		function(){ 
			// La capa de la busqueda ocupa todo el sitio
			$( "#resultadoBusqueda" ).animate( { width: "100%" }, 500,  
				function(){
					// y se baja la capa del botion de mostrar filtros
					$( "#capaAbrirFiltros" ).slideDown( 500	);
				}
			); 
		} 
	);
}

function abrirFiltros(){
	// Primero se sube y oculta el boton de mostrar
	$( "#capaAbrirFiltros" ).slideUp( 500, 
		function()
		{
			// luego se hace mas pequenia la capa de la busqueda
			$( "#resultadoBusqueda" ).animate(
				{width: "78%"},
				500, 
				// para dejar sitio a la capa de los filtros, que se muestra
				function(){ 
					$( "#contFiltros" ).fadeIn( 500	); 
				} 
			);
		} 
	);
}


/*-------MENSAJE AMIGO-------*/

// Funcion que muestra u oculta la capa del texto de un mensaje en funcion de si antes era visible o no
function muestraTextoMensaje(){
	$( "#mensajeAmigo" ).is( ":visible" ) ?  $( "#mensajeAmigo" ).hide():$( "#mensajeAmigo" ).show(); 
}

// Funcion que muestra la capa para enviar mensajes y oculta la del mensaje enviado
function muestraDivEnviarMensajes(){
	$( "#divEnviarMensajes" ).show();
    $( "#divMensajeEnviado" ).hide();
}

// Funcion que envia el mensaje a un amigo
function enviarMensajeAmigo() 
{	
	// Se almacena el texto de la busqueda
	var nombreBusqueda = $( "#textBusqueda" ).val();
	
	// Se almacenan en variables los emails
	var emailOrigen = $( "#emailAmigoOrigen" ).val();
	var emailDestino = $( "#emailAmigoDestino" ).val();
	
	// Se almacenan en variables si los emails son correctos
	var emailOrigenCorrecto = validaEmail( emailOrigen );
	var emailDestinoCorrecto = validaEmail( emailDestino );
		
	// Se muestran u ocultan las alertas sobre los correos de origen o destino segun lo que proceda
	( emailOrigenCorrecto && emailDestinoCorrecto ) ? $( "#alertasCorreos" ).hide(): $( "#alertasCorreos" ).show();
	emailOrigenCorrecto ? $( "#alertaCorreoOrigen" ).hide(): $( "#alertaCorreoOrigen" ).show();
	emailDestinoCorrecto ? $( "#alertaCorreoDestino" ).hide(): $( "#alertaCorreoDestino" ).show();
	
	// Si los emails origen y destino son correctos se ejecuta la llamada ajax
      	if ( emailOrigenCorrecto && emailDestinoCorrecto )
      	{
      		var datas="emailOrigen=" + emailOrigen + "&emailDestino=" + emailDestino +
      				  "&nombreBusqueda=" + nombreBusqueda + "&enlaceBusqueda=" + location.href + 
      				  "&comentarios=" + $( "#comentariosAmigo" ).val();
      	
		$.ajax({
			type: "POST",
       		url: "/www/mitula/mytula/enviarMensajeAAmigo.jsp",
       		data: datas,
       		dataType: "script",
       		// En data se devuelve true o false
       		success: function( data ) {
       			// Caso de exito
       			if ( eval( data ) )
       			{
					$( "#divEnviarMensajes,#divCargandoAmigo,#divErrorAmigo" ).hide();
	       			$( "#divMensajeEnviado" ).show();
	       		}
	       		// Este es el caso de error en el servidor, es igual al codigo de la funcion error()
	       		else
	       		{
					$( "#divMensajeEnviado,#divCargandoAmigo,#mensajeAmigo" ).hide();
       				$( "#divErrorAmigo,#divEnviarMensajes" ).show();
	       		}
       		},
       		error: function(){
				$( "#divMensajeEnviado,#divCargandoAmigo,#mensajeAmigo" ).hide();
       			$( "#divErrorAmigo,#divEnviarMensajes" ).show();
       		},
       		beforeSend: function(){
       			$( "#divEnviarMensajes,#divMensajeEnviado,#divErrorAmigo,#mensajeAmigo" ).hide();
       			$( "#emailAmigoEnviado" ).html( $( "#emailAmigoDestino" ).val() );
       			$( "#emailAmigoOrigen,#emailAmigoDestino,#comentariosAmigo" ).val( "" );
       			$( "#divCargandoAmigo" ).show();
       		}
    	});
    	// Despues de ejecutar la llamada ajax, se cierra la capa de alerta
    	cierraCapaAlerta();
    }
}	

function validaEmail(cadena) {
  var cadenaComp1 = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  var cadenaComp2 = /^[A-Za-z0-9][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!cadenaComp1.test(cadena) || !cadenaComp2.test(cadena)) {
    return false;
  }
  return true;
}