// ACORDEON:
// - Acordeon de la Ficha - URL de referencia: http://www.learningjquery.com/2007/03/accordion-madness
// - Los 'h2' al ser clicados despliegan los 'div' que tienen a continuación

$(document).ready(function() {
	// Si hay más de una solapa...
	if($('.ficha> div').length > 1){
		// Escribir el link de impresion
		$(".ficha_tools").html("<ul class=\"clearfix\"><li id=\"toggle\" class=\"down\"><a href=\"#\">ver ficha completa</a></li><li id=\"print\"><a href=\"#\">imprimir</a></li></ul>");
	}
	else{
		// Escribir el link para deplegar/plegar links + link de impresion
		$(".ficha_tools").html("<ul class=\"clearfix\"><li id=\"print\"><a href=\"#\">imprimir</a></li></ul>");
	}
	
	// Imprimir
	$("#print").click(function() {
        slideDownAll();
		window.print();
		return false;
	});
	
	var $slideDownText = "desplegar ficha completa";
	var $slideUpText = "plegar ficha completamente";
	
	// Ocultar todos los 'div' de la ficha que tengan un índice de nodo mayor que 0.
	$('.ficha> div:gt(0)').hide();
	
	// Al primer 'h2' de la ficha le añadimos la clase 'selected'
	$('.ficha> h3:first').addClass("selected");
	
	// Meter al enlace que despliega todos los 'div' el texto oportuno al inicio
	$('#toggle').children("a").html($slideDownText)
	
	// mouseover y mouseout de 'h2' (pensado para IE6 que no entiende la pseudoclase ':hover' de un 'h2')
	$('.ficha> h3').mouseover(function() {
		$(this).addClass("mouseover");
	});
	$('.ficha> h3').mouseout(function() {
		$(this).removeClass("mouseover");
	});
	
	// mouseover y mouseout de 'h2.selected' (pestaña seleccionada). Es necesario hacerlo así para IE6 porque no entiende la pseudoclase ':hover' de 'h2'
	$('.ficha> h3.selected').mouseover(function() {
		$(this).addClass("selected_mouseover");
	});
	$('.ficha> h3.selected').mouseout(function() {
		$(this).removeClass("selected_mouseover");
	});
	

	
	// ----------  click sobre cualquier 'h2' ---------- 
	$('.ficha> h3').click(function() {
		// el 'div' próximo al 'h2' que acabamos de clicar
		var $nextDiv = $(this).next();
		// 'div'-s visibles (desplegados), hermanos del próximo al 'h2' que acabamos de clicar
		var $visibleDivSiblings = $nextDiv.siblings('div:visible');
		// --------------------------------
		// Si hay algún 'div' desplegado...
		// --------------------------------
		if ($visibleDivSiblings.length)
		{
			// Plegar todos los 'div' visibles...
			$visibleDivSiblings
				.slideUp('fast', function() {
				// ... y tras esto, desplegar el 'div' que va próximo al 'h2' clicado
				$nextDiv.slideDown(
					'fast', function(){ $('.ficha h3').mouseout(); }
				);
			});
			// Ordenar quitar la clase "selected" a todos los 'h2' hermanos del que hemos clicado por si lo tuvieran
			$(this).siblings().removeClass("selected");
		}
		else
		{
			// ...y sino hay ningún 'div' desplegado, mostrar el 'div' que va próximo al 'h2' clicado
			$nextDiv.slideToggle('fast');
		}
		
		// ---------------------------------------
		// Si había más de un 'div' desplegado...
		// ---------------------------------------
		if ($visibleDivSiblings.length > "1"){
			$('#toggle')
				.toggleClass("open")
				.children("a").html($slideDownText);
		}
		else
		{
			// ...y sino (si hay un 'div' o ninguno desplegado)...
			// Aplicar la clase "selected" al 'h2' clicado
			$(this).toggleClass("selected");
		}
	});


	// ---------- Pliegue y despliegue completo del acordeon ---------- 
	// desplegar todos los 'div'
	function slideDownAll(){
		$('#toggle')
			.children("a").html($slideUpText);
		$('.ficha> div').slideDown('fast');
		$('.ficha> h3').addClass("selected");
	}
	// plegar todas los 'div'
	function slideUpAll(){
		$('#toggle')
			.children("a").html($slideDownText);
		$('.ficha> div').slideUp('fast');
		$('.ficha> h3').removeClass("selected");
	}
	// enlace de pliegue/despliegue
	$('#toggle').click(function() {
		// 'div'-s de la ficha
		var $divSiblings = $('.ficha> h3').next().siblings('div');
		// 'div'-s visibles (desplegados)
		var $visibleDivSiblings = $('.ficha> h3').next().siblings('div:visible');
		
		// Si la cantidad total de 'div'-s visibles es igual a la de 'div'-s existentes
		// es señal de que todo está desplegado.
		if ($visibleDivSiblings.length == $divSiblings.length)
		{
			slideUpAll();
		}
		else
		{
			slideDownAll();
		}
		// Cambiar de icono
		$(this).toggleClass("open");
	});
});

