var sliding = 0;
var slideTime = '';
var buffer = '';

// Set is sliding value
function setSliding(a_ISliding){
	sliding = a_ISliding;
}

// Get is sliding value
function getSliding(){
	return sliding;
}

function replace_em()
{
		var panel_body = $$('div.panel_body');	
		for(i=0;i<panel_body.size();i++)
		{
			j = i+1;
			panel_body[i].id = 'panel'+j; // set id panel_bodyx	
		}
		
		var replace_ids = $$('div.panel');		
		for(i=0;i<replace_ids.size();i++)
		{
			j = i+1;
			replace_ids[i].id = 'panel'+j; // set id panelx	
		}
}

// Setup accordian initial state
function init() {
		replace_em();
		// buffer = $('accordion').innerHTML;
		
		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(document.body, 'mousemove', resetIdle, 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.SlideUp(elup),
				new Effect.SlideDown(eldown)
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
		
		
		//new Effect.SlideUp(elup, {duration: 1.0, afterFinish: function() { setSliding( 0 );}});
		//new Effect.SlideDown(eldown, {duration: 0.5, afterFinish: function() { setSliding( 0 );}});
}

function singleSlide( eldown ){
	
		new Effect.Parallel(
		[
				new Effect.SlideDown(eldown)
		], {
				duration: 0.3,
				afterFinish: function() { setSliding( 0 );}
		});
}

function reset_heights()
{
		var panel_body = $$('div.panel_body');	
		for(i=0;i<panel_body.size();i++)
		{
			j = i+1;
			panel_body[i].setStyle({
									  display: 'none',
									  height: '150px'
									});
			//alert("panel_body"+i+" gesetzt Höhe:"+panel_body[i].getStyle('height')+' gesetzte display: '+ panel_body[i].getStyle('display'));	
		}
}

function resetTabs(){
	
	var resetEl = getNextSibling( $('visible') );
	
	setSliding( 1 );
	
	new Effect.Parallel(
	[
			new Effect.SlideUp( resetEl )
	], {
			duration: 0.3,
			afterFinish: function() { setSliding( 0 );}
	});
	
	$('visible').id = '';
	
	//window.setTimeout("$('accordion').update(buffer)", 1000);
	window.setTimeout("reset_heights()", 1000);
}

function resetIdle(){
		if( $('visible') ){
				window.clearTimeout( slideTime );
				slideTime = window.setTimeout( "resetTabs()", 5000 );
		}
}

function setIdle(){
	if( $('visible') ){
		slideTime = window.setTimeout( "resetTabs()", 5000 );
	}
}

function set_id(id)
{	
	el = $(id).getElementsByTagName('h3')[0];
	var eldown = getNextSibling(el);
	
	//  If element is visible do nothing
	if ($('visible') == el) {
			return;
	}
	if ($('visible')) {
	
			if( getSliding() == 1 ){
					return false;
			}
		
			var elup = getNextSibling($('visible'));

			setSliding( 1 );
			
			parellelSlide( elup, eldown );
			$('visible').id = '';
			
	}
	else{
			setSliding( 1 );
			singleSlide( eldown );
	}
	
	el.id = 'visible';
}


start_slideshow(1, 16, 5000);
    
    function start_slideshow(start_frame, end_frame, delay) {
        setTimeout(switch_slides(start_frame,start_frame,end_frame, delay), delay);
    }
                            
    function switch_slides(frame, start_frame, end_frame, delay) {
        return (function() {
            Effect.Fade('slideshow' + frame, { duration: 3.0 });
            if (frame == end_frame) { frame = start_frame; } else { frame = frame + 1; }
            setTimeout("Effect.Appear('slideshow" + frame + "', { duration: 3.0 });", 50);
            setTimeout(switch_slides(frame, start_frame, end_frame, delay), delay + 1850);
        })
    }


Event.observe(window, 'load', init, false);