var sliding = 0;
var slideTime = '';

// Set is sliding value
function setSliding(a_ISliding){
	sliding = a_ISliding;
}

// Get is sliding value
function getSliding(){
	return sliding;

}

// Carry out accordian styled effect
function accordion(evt) {
	var el = Event.element(evt);
	var eldown = getNextSibling(el);
	
	//  If element is visible do nothing
	if ($('visible') == el) {
			return;
	}
	if ($('visible')) {

		// UNA SUBE Y UNA BAJA
	
			if( getSliding() == 1 ){
					return false;
			}
		
			var elup = getNextSibling($('visible'));

			setSliding( 1 );
			$('visible').id = '';
			
			parellelSlide( elup, eldown );


			
	}
	else{

		// ESTO ES CUANDO ESTAN TODAS ABAJO Y SUBEN
			setSliding( 1 );
			singleSlide( eldown );
	}
	
	el.id = 'visible';
}


function accordion2(evt)
	{
	var resetEl = getNextSibling( Event.element(evt) );
	var navegador = navigator.userAgent;
		if( getSliding() == 1 ){
					return;
			}

	if (navegador.search(/safari/i) > 0)
		{
		Event.stopObserving(Event.element(evt), 'mousemove', accordion, false);
		Event.stopObserving(Event.element(evt), 'mouseover', accordion, false);
		}

	setSliding( 1 );
	resetEl.id = '';
	$('visible').id = '';


	if (navegador.search(/safari/i) > 0)
		{
			new Effect.Parallel(
	[
			new Effect.SlideUp( resetEl )
	], {
			duration: 0,
			afterFinish: function() { observar(Event.element(evt));}
		
		});
		}
	else
		{
			new Effect.Parallel(
	[
			new Effect.SlideUp( resetEl )
	], {
			duration: 0	
		
		});
		
		
		}
	 setSliding(0)

	}
function observar(elemento)
{
	Event.observe(elemento, 'mousemove', accordion, false);
	Event.observe(elemento, 'mouseover', accordion, false);
}

// Setup accordian initial state
function init() {
		
		var bodyPanels = document.getElementsByClassName('panel_body');
		var panels = document.getElementsByClassName('panel');
		var noPanels = panels.length;
		var percentageWidth = 100 / noPanels;
		var position = 0;
		
		//  Loop through body panels and panels applying required styles and adding event listeners
    for (i = 0; i < bodyPanels.length; i++) {
			bodyPanels[i].hide();
			panels[i].style.width = percentageWidth + '%';
			panels[i].style.position = 'absolute';
			panels[i].style.left = position + '%';
			Event.observe(panels[i].getElementsByTagName('h3')[0], 'mouseover', accordion, false);
			Event.observe(panels[i].getElementsByTagName('h3')[0], 'mousemove', accordion, false);
			Event.observe(panels[i].getElementsByTagName('h3')[0], 'click', accordion2, false);
									
			position += percentageWidth;
    }
		
		if( $('visible') ){
		//  Set panel with id of visible to be initial displayed
			var vis = $('visible').parentNode.id+'-body';
			$(vis).show();
		}
		//setIdle();
}

// Next sibling method to work around firefox issues
function getNextSibling(startBrother){
	var endBrother=startBrother.nextSibling;
  while(endBrother.nodeType!=1){
    endBrother = endBrother.nextSibling;
  }
  return endBrother;
}

function parellelSlide( elup, eldown ){
		new Effect.Parallel(
		[
				new Effect.SlideUp(elup),
				new Effect.SlideDown(eldown)
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
}

function singleSlide( eldown ){
	
		new Effect.Parallel(
		[
				new Effect.SlideDown(eldown)
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
}




/*
function resetTabs(dato){
	if (dato == 1)
	{
		
		var resetEl = getNextSibling( $('visible') );
		
		setSliding( 1 );
		
		new Effect.Parallel(
		[
				new Effect.SlideUp( resetEl )
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
		valor=0;
	}

	
}
*/
/*
function bajar()
	{
		if (( $('visible') ))
		{
				if( getSliding() == 1 )
					{
					return;
					}
			setSliding( 1 );
			var resetEl = getNextSibling( $('visible') );
			
			new Effect.Parallel(
		[
				new Effect.SlideUp( resetEl )
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
		$('visible').id = '';
	}
		
	el.id = 'visible';
	}
*/

function resetIdle(){
		if( $('visible') ){
				window.clearTimeout( slideTime );
				slideTime = window.setTimeout( "resetTabs()", 1500 );
		}
}

function setIdle(){
	if( $('visible') ){
		slideTime = window.setTimeout( "resetTabs()", 1500 );
	}
}

Event.observe(window, 'load', init, false);